用于匹配特定数字位数的正则表达式

时间:2012-11-01 14:13:58

标签: regex validation

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

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

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

3 个答案:

答案 0 :(得分:29)

好吧,你可以试试像:

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

这恰好匹配九位数字,后跟一个可选的两位数字(即9或11位数字)。

可替换地,

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

也可以。

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

答案 1 :(得分:3)

这个正则表达式会做

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

或者如果您不想完全匹配

\D(\d{9}|\d{11})\D

答案 2 :(得分:2)

/[^\d](\d{9}|\d{11})[^\d]/

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

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

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

适用于某些工具。你在忙什么工作?