我有这个验证电话号码的代码:
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/