3

次の入力のみを許可する JavaScript 正規表現を作成しようとしています。

  • 数字
  • カンマで区切られた数字
  • 間にハイフンを含む数字ですが、その後に別の数字またはコンマが続き、その後に数字が続きます。このパターンを繰り返すことができます。

これまでのところ、次の表現があります。

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

ただし、これは許可1-1-1されていますが、これは望ましくありません。ハイフンは、その後に別の数字 - ハイフン - 数字の組み合わせが続かない場合にのみ表示されます。

このリンクが役立つかもしれません: http://regexr.com?34ljt

次のサンプルは、有効であると評価される必要があります。

01,03,05-08,10
01,03,05
01,03,05-08
01
1,1,5-6,1,1
1,1,5-6,1,1-3
12,12, 1-9
1-9,5,5
1-9,9,9,5-6
1-2
11-11
11,11
1,1
1,1,1
11,11,11
1111
1,1,1, 1,1,1
1
56,1
1,1
1,3
1,3,4,5
1,3

次のサンプルは無効と評価されます。

sdfdf
11-11-11-11
1-1-1-1-1
f
01,
01,03,05-08,
-1,4-,-5,8909
1,1,1-1-1
1,1 ,11-1111-1
1-1-1
1,,1
1--1
1-
1,, - 1- df
-1 ,1


4

2 に答える 2

3

解決策が正しいかどうかを徹底的に判断するのに十分な例を提供してくれた素晴らしいリンクと称賛。これはうまくいくようです:

^([0-9]+(-[0-9]+)?(,(?!$)|$))+$

http://regexr.com?34lk6

したがって、数字、オプションでダッシュと数字が続き、その後にコンマ (コンマが行末の前の最後の文字でない限り) または行末が続きます。

于 2013-04-24T17:45:56.793 に答える