3

9 ~ 13 の数字を検証するために正規表現を実行しようとしていますが、シーケンスにはダッシュとスペースを含めることができ、理想的には複数のスペースまたはダッシュを連続して使用しないことです。

このルールにより、9 から 13 の間で検証を制御できます

/^[\d]{9,13}$/ 

ダッシュとスペースを追加する

/^[\d -]{9,13}$/

私はそのようなものが必要だと思いますが、数を数える必要があります

/^[ -](?:\d){9,13}$/

任意のヒント?

4

4 に答える 4

4

私の正規表現が数字で始まり数字で終わることに注意してください。また、これにより連続するスペースとダッシュが防止されます。

/^\d([ \-]?\d){7,12}$/

于 2013-09-22T21:48:35.930 に答える
3

先頭または末尾のスペースとダッシュは必要ないようです。これでうまくいくはずです。

/^\d([- ]*\d){8,12}$/

正規表現:

\d          digits (0-9)
 (          group and capture to \1 (between 8 and 12 times)
 [- ]*      any character of: '-', ' ' (0 or more times)
   \d       digits (0-9)
 ){8,12}    end of \1 

別のオプション: 数字の後に任意の数のスペースまたはダッシュが 8 ~ 12 回続き、その後に数字が続きます。

/^(\d[- ]*){8,12}\d$/
于 2013-09-22T22:51:43.050 に答える
0

スペースに続くダッシュ、またはその逆は問題ないと仮定します。

^( -?|- ?)?(\d( -?|- ?)?){9,13}$

説明:

( -?|- ?)- これは と同等( | -|-|- )です。ここに 2 つの連続するダッシュまたはスペースを含めることはできません。また、これは数字の先頭または直後にのみ表示できるため、文字列内で 2 つの連続するダッシュまたはスペースを防ぐことができます。

また、 には明らかに正確に 1 桁が必要である(\d( -?|- ?)?)ため、 は{9,13}9 ~ 13 桁を強制します。

スペースの後にダッシュが続く、またはその逆の場合は問題ありません。

^[ -]?(\d[ -]?){9,13}$

上記と同様の説明。

上記の両方で、文字列を数字、ダッシュ、またはスペースで開始または終了できます。

于 2013-09-22T21:49:57.513 に答える
0

先読みを使用して、さまざまな制約をアサートします。

/^(?!.*(  |--))(?=(\D*\d){9,13}\D*$)[\d -]+$/ 
于 2013-09-22T21:56:39.727 に答える