问题描述
这是我目前使用的正则表达式模式,例如:01xxxxxxxx:
<input class="mdl-textfield__input" name="mobile_number" type="text" pattern="^(\+?6?01)[0-46-9]-*[0-
9]{7,8}$">
我试图不仅允许 10 位数字,还允许其他格式为 11 位数字 (01xxxxxxxxx) 和办公室号码,例如:0xxxxxxxx。
有人可以帮我吗?
解决方法
您可以使用替代 |
来匹配可选的前缀部分,如果不需要连字符,则省略匹配,第二个替代匹配 0 后跟 8 位数字。
模式属性是隐式锚定的,所以可以省略^
和$
\+?6?(?:01[0-46-9]\d{7,8}|0\d{8})
模式匹配:
-
\+?6?
匹配可选的+
和可选的6
-
(?:
交替的非捕获组-
01[0-46-9]\d{7,8}
匹配01
然后是除5
和 7-8 位数字之外的一个数字 -
|
或 -
0\d{8}
匹配一个0
和 8 个数字
-
-
)
关闭非捕获组