我无法用这个正则表达式来验证电话号码/?(?(〜d {3)/)?[... / /]?(〜d {3})[。 - /]?(\ d {4})$ /;前三位数位于括号(xxx)xxx-xxxx中。我尝试使用if / else循环测试电话号码,但有些东西不起作用,我找不到我做错了什么。谢谢你的帮助。
function validatePhone() {
var pNumber = document.getElementById("phoneprompt").value;
var regex = /^\(?(\d{3})\)?[\.\.-\/]?(\d{3})[\.\-\/ ]?(\d{4})$/;
if (regex.test(pNumber)) {
document.getElementById("phoneprompt").innerHTML = "<img src=\"greencheck.png\" />";
return (true);
} else {
document.getElementById("phoneprompt").innerHTML = "<img src=\"redcheck.png\" /> Phone numbers must be in (xxx) xxx-xxxx format";
return (false);
}
}
答案 0 :(得分:1)
除了正则表达式的问题,你不能设置输入字段的innerHTML,所以
function validatePhone() {
var el = document.getElementById("phoneprompt"),
pNumber = el.value,
regex = /^\(?(\d{3})\)?\s?[\.\.-\/]?(\d{3})[\.\-\/ ]?(\d{4})$/,
valid = regex.test(pNumber);
if (valid) {
document.getElementById("phonepromptmsg").innerHTML = "<img src=\"greencheck.png\" />";
} else {
document.getElementById("phonepromptmsg").innerHTML = "<img src=\"redcheck.png\" /> Phone numbers must be in (xxx) xxx-xxxx format";
}
return valid;
}
&#13;
<input id="phoneprompt" onchange="validatePhone()" />
<span id="phonepromptmsg"></span>
<br />
<input type="button" onclick="validatePhone()" value="Test"/>
&#13;
答案 1 :(得分:0)
您可以更改
/^\(?(\d{3})\)?[\.\.-\/]?(\d{3})[\.\-\/ ]?(\d{4})$/
到
/^\(?(\d{3})\)?\s?[\.\.-\/]?(\d{3})[\.\-\/ ]?(\d{4})$/
以容纳可选地位于区号之后的空格,因此(xxx) xxx-xxxx
和(xxx)xxx-xxxx
都将匹配。
但是,这里有一个更强大的10位数电话号码正则表达式,其中括号和短划线是可选的:
/^(\+\d{1,2}\s)?\(?\d{3}\)?[\s.-]?\d{3}[\s.-]?\d{4}$/
这些都将匹配:
(123)456-7890
(123)456-7890
123-456-7890
123 456 7890
参考:Regular expression to match standard 10 digit phone number