1

私は次の正規表現を持っています:

(\d{5}[,])

これは次のように一致します。

12005,11111,11111,

しかし、末尾のコンマをオプションにするにはどうすればよいですか?

編集:

許容できる結果は次のとおりです。

12005,

11111,11111,

12005

11111,11111

許容できない:

123456

123456,

12345,123456

123456,123456
4

5 に答える 5

5
(\d{5})(?:,|$)

トリックを行う必要があります。

これを分解するには、

  • \d{5}-5桁
  • (?:...)-かっこを使用して|
  • ,-リテラルコンマ
  • $-入力の終わり
  • ,|$-コンマまたは入力の終わり。

この|$部分は、。のようにコンマで区切られていない数字のグループが誤って一致するのを防ぐために必要です"01234567889"


実際の動作を確認するには、

 JSON.stringify(
     ["01234", "01234,", "01234,56789", "01234,56789", "", "0123456789"]
     .filter(
         function (s) {
             return /^(?:(\d{5})(?:,|$))+$/.test(s);
         }))

これは、より大きな正規表現を使用してこれらのグループの1つ以上に一致するため、

["01234","01234,","01234,56789","01234,56789"]
于 2012-08-24T17:22:49.870 に答える
2
(\d{5}[,]?)

一致します

12005,11111,11111,

また

12005,11111,11111
于 2012-08-24T17:23:00.137 に答える
1

6桁以上の数字から5桁が一致しないようにするには、次のように、単語境界アサーション(\b)と行頭アサーション()を使用し^ます。

(?:\b|^)(\d{5})(?:,|$)
于 2012-08-24T17:33:02.383 に答える
0

おそらくこれ:

((?:\d{5},)*\d{5})

5つの数字の1つのセット、またはコンマで区切られた複数の数字の場合に機能します。または、完全に明示的にして、開始と終了を平手打ちすることもできます。

^((?:\d{5},)*\d{5})$
于 2012-08-24T17:22:45.363 に答える
0

\d{5}[,]*-0以上または\d{5}[,]?-0または1。

于 2012-08-24T17:24:45.817 に答える