我正在尝试使用正则表达式来验证9到13个数字之间的数字,但序列可以有短划线和空格,理想情况是连续不会有多个空格或短划线。
此规则允许我控制9到13之间的验证
/^[\d]{9,13}$/
现在添加破折号和空格
/^[\d -]{9,13}$/
我想我需要这样的东西,但我需要计算数字
/^[ -](?:\d){9,13}$/
任何提示?
答案 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 -]+$/