6

数値を次のような正規表現と一致させようとしています:

34-7878-3523-4233

これとともに:

^[0-9][0-9-]*-[0-9-]*[0-9]$

しかし、式も許可します

34--34--------88

では、数字の間にハイフンを 1 つだけ許可するにはどうすればよいでしょうか。

4

3 に答える 3

23

あなたの正規表現:

実際に見てみましょう: Regexr.com

^[0-9]+(-[0-9]+)+$

一致:

1-2
1-2-3

一致しません:

1
1-
1-2-
1-2----3
1---3
于 2012-12-25T13:05:22.603 に答える
7

これは、文字クラスで許可されている文字にハイフンが含まれているためです。あなたはそれを外に持っているべきです。

次のようなことを試すことができます: -

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

これで、いくつかの数字の後にハイフンが続く0 回以上の繰り返しに一致します。次に、末尾に 1 つ以上の数字。

于 2012-12-25T13:04:41.343 に答える
3

normal*(special normal*)*次のパターンを使用します。

^[0-9]+(-[0-9]+)+$

どこにいてどこにnormalいる[0-9]special-

于 2012-12-25T13:05:58.180 に答える