javascript - 电话号码验证器

标签 javascript html regex validation

我有这个验证电话号码的代码:

function phvalid() {
    var regexObj = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
    if (regexObj.test(subjectString)) {
        var formattedPhoneNumber = subjectString.replace(regexObj, "($1) $2-$3");
    } else {
        alert("Invalid Number");
    }
}

我正在尝试将其验证到以下 html 代码的正文中:

<p class="normal">Phone:
    <input type='text' id='ph' />
    <input type='button' onclick="phvalid();" value="Click" />
</p>

这个函数是对的还是我做错了什么?

最佳答案

你从未定义subjectString

试试这个:http://jsfiddle.net/bfvXL/1/

function phvalid() {

    var regexObj = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
    var subjectString = document.getElementById("ph").value;
    if (regexObj.test(subjectString))

    {
        var formattedPhoneNumber = subjectString.replace(regexObj, "($1) $2-$3");
    } else {
        alert("Invalid Number");
    }

}

这将运行您的函数,但我不确定您对 formattedPhoneNumber block 的意图。

此外,您还需要确保您的 onclick 可以访问它。因此,你必须将 js 放在你的 body 中,或者放在 dom 加载后运行的 block 中。

编辑:我相信这就是您想要的formattedPhoneNumber:http://jsfiddle.net/bfvXL/2/

编辑2:对于下面评论中的新要求...试试这个:http://jsfiddle.net/bfvXL/3/

function phvalid() {
    var subjectString = document.getElementById("ph").value;
    subjectString = subjectString.replace(/[^\d]/g, "");
    if (subjectString.length == 10) {
        var regexObj = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
        var formattedPhoneNumber = subjectString.replace(regexObj, "($1) $2-$3");
        document.getElementById("ph").value = formattedPhoneNumber;
    } else {
        alert("Invalid Number");
    }
}

实际上,由于在这种情况下 regexObj 没有用于验证,因此您可以简单地将其设置为 /(\d{3})(\d{3}) (\d{4})/

关于javascript - 电话号码验证器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349957/

相关文章:

javascript - 如果通过特定字符串搜索元素,如何获取 nextsibling 的值?

javascript - jQuery setAttribute 中的图像没有改变

html - 如何使用我自己的 CSS 设置 Twitter 小部件的样式

java - 用于验证国际电子邮件的正则表达式

javascript - 为什么我在 Gitlab CI 中出现 TypeError,但在运行 jest 时在我的机器上却没有?

javascript - 加载 JS 文件 - 直接加载到 Document 与 DocumentFragment

jquery - 将 RGB 值转换为 HTML 颜色代码?

javascript - 我如何找出 IndexedDB 中可用的数据库?

ruby-on-rails - Ruby,正则表达式匹配制表符并替换为 2 个空格?

Javascript 对象事件处理程序范围,最佳实践?