34

以下正则表达式将匹配 9-11 位数字:/\d{9,11}/

编写完全匹配 9位11 位数字(不包括 10 位)的正则表达式的最佳方法是什么?

使用输入元素的模式属性,因此正则表达式应该匹配输入字段的整个值。我想接受任何包含 9 位或 11 位数字的数字。

4

3 回答 3

42

好吧,您可以尝试以下方法:

^\d{9}(\d{2})?$

这完全匹配九位数字,后跟可选的额外两位数字(即 9 或 11 位数字)。

或者,

^(\d{9}|\d{11})$

也可以工作。

但请记住,并非所有事情都必须使用正则表达式来完成。^\d*$检查字符串匹配以及字符串长度本身是 9 还是 11可能同样容易(例如strlen,使用类似的东西)。

于 2012-11-01T14:17:29.443 回答
5

这个正则表达式会做

^(\d{9}|\d{11})$

或者如果你不想完全匹配它

\D(\d{9}|\d{11})\D
于 2012-11-01T14:17:09.040 回答
1
/[^\d](\d{9}|\d{11})[^\d]/

根据您使用的工具,您可能需要转义(|)字符。

请注意,为了不匹配 8 或除 9 或 11 之外的任何其他数字,正则表达式必须以某些内容为界,以表明匹配被非数字字符包围。理想情况下,它将是某种字边界字符,但其语法会因工具而异。

/\b(\d{9}|\d{11})\b/

使用一些工具。你在做什么?

于 2012-11-01T14:16:29.017 回答