我正在尝试弄清楚如何使用正则表达式来验证Javascript中的电话号码。
到目前为止,我的想法是在提交表单时获取值,并将它们与正则表达式进行比较。我将如何在Javascript中执行此操作?到目前为止,我的伪代码看起来像这样:
phoneVal = document.getElementById("phone");
if (phoneVal == \d{3}-\d{3}-\d{4}) {
return True;
}
else if (phoneVal == \d{10}) {
<string methods to add hyphens to an unbroken number>
return True;
}
等等
这看起来是否正确?
编辑:在if语句中我如何处理括号?
例如,/(\ d {3})\ d {3} - \ d {4} /,只有它位于if()内部,因此可能存在解析问题?
答案 0 :(得分:1)
这看起来是正确的,如伪代码;正则表达式测试的实际JavaScript语法是:
if(/^\d{3}-\d{3}-\d{4}$/.test(phoneVal))
(请注意^
和$
;如果没有它们,即使phoneVal
仅包含电话号码作为子字符串,它也会匹配。)
那就是说,我不确定这一部分:
<string methods to add hyphens to an unbroken number>
很有用。无论如何,您都希望在服务器端重新执行所有验证和规范化,您可以保证它们实际发生;客户端JavaScript验证的唯一好处是尽可能以更加用户友好的方式显示错误消息。在没有看到你的应用程序的其余部分的情况下,我无法肯定地说,但我会猜测在这个客户端代码中添加连字符没有任何实际好处。
答案 1 :(得分:0)
phoneVal = document.getElementById("phone");
if (/\d{3}-\d{3}-\d{4}/.test(phoneVal)) {
return True;
}
else if (/\d{10}/.test(phoneVal )) {
// <string methods to add hyphens to an unbroken number>
return True;
}
或
return /\d{10}|\d{3}-\d{3}-\d{4}/.test(phoneVal )