正则表达式,数字空格破折号限制为8-13个数字

时间:2013-09-22 21:42:49

标签: regex

我正在尝试使用正则表达式来验证9到13个数字之间的数字,但序列可以有短划线和空格,理想情况是连续不会有多个空格或短划线。

此规则允许我控制9到13之间的验证

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

现在添加破折号和空格

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

我想我需要这样的东西,但我需要计算数字

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

任何提示?

4 个答案:

答案 0 :(得分:4)

注意我的正则表达式如何以数字开头和结尾。此外,这可以防止连续的空格和破折号。

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

答案 1 :(得分: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$/

答案 2 :(得分:0)

假设空格后面的破折号或反之亦然:

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

<强>解释

( -?|- ?) - 这相当于( | -|-|- )。请注意,此处不能有2个连续的破折号或空格,并且这只能出现在开头或直接出现在数字后面,这样可以防止字符串中连续出现2个破折号或空格。

(\d( -?|- ?)?)显然必须有一个数字,因此{9,13}强制执行9-13位。

假设空格后面的破折号或反之亦然:

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

与上述类似的解释。

以上两者都允许字符串以数字,短划线或空格开头或结尾。

答案 3 :(得分:0)

使用预测来断言各种约束:

/^(?!.*(  |--))(?=(\D*\d){9,13}\D*$)[\d -]+$/