3

正規表現を使用して文字列をチェックしています。

ルールは:

文字列はできます、

任意の数字、ハイフン、およびコンマを含む

ハイフンとカンマは数字の中間にのみ配置する必要があります。文字列の最初または最後に配置しないでください。

カンマはオプションです。ハイフンは必須です

例えば、

有効 :

10-20
10-20-3
10-20,3 

無効 :

10
-10
,10
10-20,
10-20-
10,20

私がこれまでに試したコード:

[0-9,-]+ 

コマとハイフンが文字列の最初または最後にあるべきではないこと、および上記の条件を確認する方法を誰かが提案できますか?

4

3 に答える 3

9

この式を試してください:

[0-9][0-9,-]*-[0-9,-]*[0-9]

これが意味するのは、文字列は次のことをしなければならないということです。

  • 数字で開始および終了
  • 中央に少なくとも1つのダッシュが含まれています
  • 最初の桁の後、ダッシュの前に0個以上の[0-9,-]文字があります
  • ダッシュと最後の桁の間に0個以上の[0-9,-]文字があります
于 2012-08-12T03:01:05.237 に答える
1

これを試してみてください

[0-9][0-9,\-]*-[0-9,\-]*[0-9]

キャラクタークラスではハイフンをバックスラッシュする必要があると思います

于 2012-08-12T03:01:02.080 に答える
0

式の先頭と末尾に^orを含める必要があります。そうしないと、式は次のような無効な文字列にも一致します。\A$\z

,10
20-
-34

したがって、式は次のようになります。

^[0-9][0-9,-]*-[0-9,-]*[0-9]$
于 2012-12-25T12:53:38.643 に答える