我需要找到一个正则表达式,测试输入字符串是否恰好包含10个数字字符,同时仍允许字符串中的其他字符。
我将在后处理中剥离所有非数字字符,但我需要客户端验证的正则表达式。
例如,以下内容都应该匹配:
- 1234567890
- 12-456879x54
- 321225 -1234AAAA
- xx1234567890
但以下内容不应该匹配:
- 123456789 (数字不够)
- 12345678901 (数字太多)
这似乎应该很简单,但我就是想不出来。
我需要找到一个正则表达式,测试输入字符串是否恰好包含10个数字字符,同时仍允许字符串中的其他字符。
我将在后处理中剥离所有非数字字符,但我需要客户端验证的正则表达式。
例如,以下内容都应该匹配:
但以下内容不应该匹配:
这似乎应该很简单,但我就是想不出来。
/^\D*(\d\D*){10}$/
基本上,匹配任意数量的非数字字符,接着是一位数字,然后再跟上任意数量的非数字字符,这样的结构需要出现10次。
/^([^\d]*\d){10}[^\d]*$/
如果您首先剥离所有非数字字符,然后在结果上进行测试,那么正则表达式的处理会变得更加容易。然后它就是一个简单的
/^\d{10}$/
^\D*(\d\D*){10}\D*$
\D*
是不必要的。末尾的任何非数字都会被视为第10个捕获组的一部分。 - Amber
^
?它应该匹配字符串的开头...但是,它的真正目的是什么?无论是保留还是删除表达式,都可以匹配字符串,那么添加它的目的是什么? - Hugo Allexis Cardona