正则表达式和Javascript和电话号码

时间:2011-12-05 20:16:43

标签: javascript regex

我正在尝试弄清楚如何使用正则表达式来验证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()内部,因此可能存在解析问题?

2 个答案:

答案 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 )