2016-07-20 4 views
0

私は、文字列正規表現の文字列は二重引用符とカンマが含まれている必要がありますが、唯一の

"56565665,5656565,5656556" 

を以下している数字を区切って、私はちょうど文字列は二重引用符、カンマと数字のみを含まなければならないことを確認したいです。

私は正規表現^"\d+\,を作成しようとしましたが、最初の文字列のみが選択されています。

私は正規表現を完全に新しくしました。

+0

まず。 Regexpはそれに完全に依存します。たとえば、「12」、「1」、「1,2」、「123,123」、「1,1,1,1」のような良いマッチがあります。 ''、 '' 12 "、' '1,2、' '、' 's2" '、' 12,12' '"、1 "'などのように一致しません。 – akarilimano

+1

いくつかの便利なテストケースは '' "、" 1 "5,87" '、" 56、、76 "'、 '' 8766,87、 ''となります。 [0-9] +(?:、[0-9] +)* "" \ z "' –

+0

また空文字列はどうですか?正規表現は非常に壊れやすいものであり、事前に完全な一連の要件がわかっている場合にのみ「動作」します。 –

答えて

3

あなたはそれが原因かについてのコメントでの質問に

using System.Text.RegularExpressions 
... 
Console.WriteLine(Regex.IsMatch(@"""56565665,5656565,5656556""", @"^""[\d,]+""$")); 
Console.WriteLine(Regex.IsMatch(@"""56565665,5656565;5656556""", @"^""[\d,]+""$")); 

に起因するエスケープ文字を次のように更新を見えるC#ではregex101

にここでそれを参照してください^"[\d,]+"$

を使用することができます変数と一緒に使用する:

var str = @"""56565665,5656565,5656556"""; 
// var str = "\"56565665,5656565,5656556\""; <- Alternative way of escaping " 

Console.WriteLine(Regex.IsMatch(str, @"^""[\d,]+""$")) 
+0

と私はこれをどのように使用するのですか? 'varパターン="^"[\ d、] +" $ "; //この行はエラーを返す –

+1

'var pattern = @"^"" [\ d、] + "" $ ";' –

+1

ちょうど注記: '\ d'は' [0-9] '、ヒンディー語、アラビア語、 .NETの何の数字でもない。 0-9を '\ d'とマッチさせるには、Regexを' RegexOptions.ECMAScript'フラグでコンパイルします。 –

1

これはあなたが以下のパターン試すことができ "^ [0-9、] + $"

1

を働くことを願って、これを試してみてください:

^"[0-9]+(,[0-9]+)*"$ 

あるいは

例えば
\A"[0-9]+(,[0-9]+)*"\z // Wiktor Stribiżew's idea, see his comment below 

string source = @"""123,456,789"""; 
string pattern = @"\A""[0-9]+(,[0-9]+)*""\z"; 

bool result = Regex.IsMatch(source, pattern); 

テスト:あなたは有効と無効試合を考える必要がある

"123"  - true // just a number 
"123,456" - true // two numbers separated by comma 
"1,2,3,4" - true // four numbers separated by comma 
","   - false // just a comma, no numbers 
",123"  - false // leading comma 
"123,"  - false // trailing comma 
"123,,456" - false // double comma 
+0

あなたの貴重な答えを説明してくれてありがとう! –

+1

ディマ、これは私の提案です。私は '\ A'と' \ z'アンカーを使用して、文字列がLFで終わらないことを確認します。あなたの正規表現は '' 12,23 \ n "'を許します。 –

+0

@WiktorStribiżew:ありがとう!微妙なエラーのニースキャッチ;私はanserを編集しました。 –

関連する問題