我正在尝试做一个正则表达式来验证 9 到 13 个数字之间的数字,但是序列可以有破折号和空格,理想的情况是不要连续有多个空格或破折号。
此规则允许我控制 9 到 13 之间的验证
/^[\d]{9,13}$/
现在添加破折号和空格
/^[\d -]{9,13}$/
我想我需要这样的东西,但我需要数数
/^[ -](?:\d){9,13}$/
有小费吗?
我正在尝试做一个正则表达式来验证 9 到 13 个数字之间的数字,但是序列可以有破折号和空格,理想的情况是不要连续有多个空格或破折号。
此规则允许我控制 9 到 13 之间的验证
/^[\d]{9,13}$/
现在添加破折号和空格
/^[\d -]{9,13}$/
我想我需要这样的东西,但我需要数数
/^[ -](?:\d){9,13}$/
有小费吗?
请注意我的正则表达式如何以数字开头和结尾。此外,这可以防止连续的空格和破折号。
/^\d([ \-]?\d){7,12}$/
看来您不希望前导或尾随空格和破折号。这应该这样做。
/^\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$/
假设空格后面有一个破折号,反之亦然是可以的:
^( -?|- ?)?(\d( -?|- ?)?){9,13}$
解释:
( -?|- ?)
- 这相当于( | -|-|- )
. 请注意,此处不能有 2 个连续的破折号或空格,并且只能出现在开头或数字之后,因此这可以防止字符串中出现 2 个连续的破折号或空格。
并且显然必须只有一位数字(\d( -?|- ?)?)
,因此{9,13}
强制执行 9-13 位数字。
假设空格后面有破折号,反之亦然是不行的:
^[ -]?(\d[ -]?){9,13}$
解释同上。
以上两种方法都允许字符串以数字、破折号或空格开头或结尾。
使用前瞻来断言各种约束:
/^(?!.*( |--))(?=(\D*\d){9,13}\D*$)[\d -]+$/