以下正则表达式将匹配范围9-11位数:/\d{9,11}/
编写正好匹配9 或 11位数(不包括10位)的正则表达式的最佳方法是什么?
使用输入元素的pattern属性,因此正则表达式应匹配输入字段的整个值。我想接受包含9或11位数的任何数字。
答案 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/
适用于某些工具。你在忙什么工作?