我正在使用正则表达式来表示电话号码。它允许至少10位数字,包括+() -
等特殊字符+1(33)-489256
我正在使用的正则表达式是:
^\D*(?:\d\D*){10,}$
它运作正常,但不应允许电话号码中的其他特殊字符,如#@ $%
请告诉我如何更新我的正则表达式。
答案 0 :(得分:3)
^\D*(?:\d\D*){10,}$
^^
[+()-]
只是指出你的正则表达式问题
\D
:除数字
答案 1 :(得分:1)
正则表达式中的问题是\D*
,这会与任何非数字字符(包括特殊字符)匹配任意次。
使用
/^(\+\d{1,4})?(\d{2}\)-\d{6}$/
/
:正则表达式字面的分隔符^
:以锚\+\d{1,3}
:+
\d
:匹配单个数字\(
:按字面意思匹配(
\d{2}
:正好匹配两位数字\)
:按字面意思匹配)
-
:按字面意思匹配-
\d{6}
:正好匹配六位数字$
:以锚点结束现场演示
input:valid {
color: green;
}
input:invalid {
color: red;
}

<input type="text" pattern="(\+\d{1,4})?\(\d{2}\)-\d{6}" />
&#13;