这是我用来匹配电话号码的正则表达式,如:
00 00 00 00 00
00 00 0 00 00 00 00
+00 0 00 00 00 00
(\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})\s+(\d{2}\s+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})\s+(+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})
我试图将它包含在我的javascript中,但它并没有真正起作用
if(document.maj_profil.phone.value.search(/^\(\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\)\s+\(\d{2}\s+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\)\s+\(+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\)/) == -1)
{
displayDialog('wrong phone format')
}
答案 0 :(得分:3)
您的替代格式如下所示:
(...)\s+(...)\s+(...)
更改它以使用|
(OR)运算符:
(...)|(...)|(...)
不要逃避括号。 \(
和\)
应该只是(
和)
。
在您的第三组中,应使用反斜杠转义开头的+
:
(\+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})
答案 1 :(得分:1)
请改为尝试:
\d\d(\s+\d\d){4}|(\d\d\s+\d\d\s+\d|\+\s+\d)\d\d(\s+\d\d){3}
表示:
\d\d(\s+\d\d){4} // 00 00 00 00 00
| // OR
( // (
\d\d\s+\d\d\s+\d // 00 00 0
| // OR
\+\s+\d // + 0
) // )
\d\d(\s+\d\d){3} // 00 00 00 00
答案 2 :(得分:0)
在javascript中,您已经转义了所有括号。您希望它们表现为捕获组,还是希望匹配字符串中的实际括号?
也使用测试代替搜索。 test返回true或false,而不是数字。
答案 3 :(得分:0)
转义括号会将它们转换为文字。尝试没有逃脱:
/^(\d{2}\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})\s+(\d{2}\s+\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})\s+(\d{2}\s+\d\s+\d{2}\s+\d{2}\s+\d{2}\s+\d{2})/
答案 4 :(得分:0)
试试这个:
var re = /^\+?(\d{1,2} ?)+$/g
var phone = "00 00 00 00 00"; //"00 00 00 00 00x";
if(!re.test(phone))
alert("wrong phone pattern");