使用正则表达式,如果数字匹配则需要返回true,否则false。
写了这段代码
//Logic for testing
function isTrue(str)
{
if(telephoneCheck(str))
{
return '<span style="color:#00ff00">OK - telephoneCheck("'+str+'") return true</span><br>';
}
else
{
return '<span style="color:#ff0000">ERROR - telephoneCheck("'+str+'") return false (MUST BE true)</span><br>';
}
}
function isFalse(str)
{
if(telephoneCheck(str))
{
return '<span style="color:#ff0000">ERROR - telephoneCheck("'+str+'") return true (MUST BE false)</span><br>';
}
else
{
return '<span style="color:#00ff00">OK - telephoneCheck("'+str+'") return false</span><br>';
}
}
function TEST()
{
var retCode='';
retCode+=isTrue("555-555-5555");
retCode+=isTrue("1 555-555-5555");
retCode+=isTrue("1 (555) 555-5555");
retCode+=isTrue("5555555555");
retCode+=isTrue("555-555-5555");
retCode+=isTrue("(555)555-5555");
retCode+=isTrue("1(555)555-5555");
retCode+=isTrue("1 555 555 5555");
retCode+=isTrue("1 456 789 4444");
retCode+=isFalse("123**&!!asdf#");
retCode+=isFalse("55555555");
retCode+=isFalse("(6505552368)");
retCode+=isFalse("2 (757) 622-7382");
retCode+=isFalse("0 (757) 622-7382");
retCode+=isFalse("-1 (757) 622-7382");
retCode+=isFalse("2 757 622-7382");
retCode+=isFalse("10 (757) 622-7382");
retCode+=isFalse("27576227382");
retCode+=isFalse("(275)76227382");
retCode+=isFalse("2(757)6227382");
retCode+=isFalse("2(757)622-7382");
retCode+=isFalse("555)-555-5555");
retCode+=isFalse("(555-555-5555");
retCode+=isFalse("(555)5(55?)-5555");
retCode+=isFalse("555-555");
retCode+=isFalse("5555555");
retCode+=isFalse("1 555)555-5555");
document.getElementById('content').innerHTML = retCode;
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
function telephoneCheck(str) {//===!!!FixIt!!!===
var regex = /1?\s?[\s\(]?[0-9]{3}[\)\s\-]?\s?[0-9]{3}[\s\-]*[0-9]{4}[^0-9]/g;
if (regex.test(str)) {
return true;
}
return false;
}
</script>
<input type=button value="TEST" onclick="TEST()"/>
<div id='content'>
</div>
</body>
</html>
我不确定正则表达式是否合适并且看起来很混乱,我不确定是否使用test, maybesearch或match。
在答案中最好解释您的正则表达式。
修复功能标有 FixIt 注释。
测试中使用的常规赛号码列表
好
"555-555-5555"
"1 555-555-5555"
"1 (555) 555-5555"
"5555555555"
"555-555-5555"
"(555)555-5555"
"1(555)555- 5555"
"1 555 555 5555"
"1 456 789 4444"
坏
“123**&!!asdf#”
“55555555”
“(6505552368)”
“2(757)622-7382”
“0(757)622-7382”
“-1(757)622-7382”
“2 757 622-7382"
"10 (757) 622-7382"
"27576227382"
"(275)76227382"
"2(757)6227382"
"2(757)622-7382"
"555)-555-5555"
"(555- 555-5555"
"(555)5(55?)-5555"
"555-555"
"5555555"
"1 555)555-5555"
它是这样工作的: