2016-04-25 9 views
0

入力(textbox.text)正規表現パターンに基づいて文字列を検証しようとしています。C#でテキストbux入力 " q"で正規表現オブジェクトを作成

Regex regX = new Regex(TextBox1.Text); 

失敗しています。しかし

Regex regX = new Regex(@"\q"); 

はうまくいきます。

ユーザーの正規表現パターンに基づいて文字列を検証する最適な方法を提案できますか?

+0

TextBox1.Textには有効な正規表現が含まれていない可能性があります。デバッガを使用してTextBox1.Textの値を確認してください –

+1

@Adiどのように失敗しますか?エラーは何ですか?それとも、期待どおりに機能しないのですか? – Tibrogargan

+0

ユーザが入力するはずの正規表現パターンやリテラルは何ですか? –

答えて

0

あなたはこのようにそれを使用する前に、パターンを検証することができます:How to validate a Regular Expression?

あなたのコードを使用すると、ボタンを使用しているどのように現れてイマイチ:検証するための

public void DoSomething() 
{ 
    string pattern = TextBox1.Text; 

    if(IsRegexPatternValid(pattern)) 
    { 
     Regex regX = new Regex(pattern); 
    } 
    else 
    { 
     // handle invalid patterns here 
     return; 
    } 
} 

public static bool IsRegexPatternValid(String pattern) 
{ 
    try 
    { 
     new Regex(pattern); 
     return true; 
    } 
    catch { } 
    return false; 
} 

ソース。しかし、あなたはKeyDownまたはTextChangedハンドラを縛っていると思います。この場合、検証が必要になります。

+0

これは、特定の言語に対してサポートされていない正規表現パターンをスキップするための良い方法です。 – Adi

+0

ありがとう:)それが問題を解決する場合は、それをマーキングすることを検討してください。そうでなければ、コメントや編集を残してください。 – C4u