判断电话号码算法挑战
问题:
如果传入字符串是一个有效的美国电话号码,则返回 true
.
要求:
telephoneCheck("555-555-5555")
应该返回一个布尔值.
telephoneCheck("1 555-555-5555")
应该返回 true.
telephoneCheck("1 (555) 555-5555")
应该返回 true.
telephoneCheck("5555555555")
应该返回 true.
telephoneCheck("555-555-5555")
应该返回 true.
telephoneCheck("(555)555-5555")
应该返回 true.
telephoneCheck("1(555)555-5555")
应该返回 true.
telephoneCheck("1 555)555-5555")
应该返回 false.
telephoneCheck("1 555 555 5555")
应该返回 true.
telephoneCheck("1 456 789 4444")
应该返回 true.
telephoneCheck("123**&!!asdf#")
应该返回 false.
telephoneCheck("55555555")
应该返回 false.
telephoneCheck("(6505552368)")
应该返回 false
telephoneCheck("2 (757) 622-7382")
应该返回 false.
telephoneCheck("0 (757) 622-7382")
应该返回 false.
telephoneCheck("-1 (757) 622-7382")
应该返回 false
telephoneCheck("2 757 622-7382")
应该返回 false.
telephoneCheck("10 (757) 622-7382")
应该返回 false.
telephoneCheck("27576227382")
应该返回 false.
telephoneCheck("(275)76227382")
应该返回 false.
telephoneCheck("2(757)6227382")
应该返回 false.
telephoneCheck("2(757)622-7382")
应该返回 false.
telephoneCheck("555)-555-5555")
应该返回 false.
telephoneCheck("(555-555-5555")
应该返回 false.
问题答案:
// Good luck!
//正则表达式
//^1?表示以1开头,1匹配0次或1次
//\d{3}匹配一个0-9的数字三次
//\(\d{3}\)匹配(一个0-9的数字三次),比上面多一个括号,左右括号分别需要加上转义字符\
// ?表示空格匹配0次或1次
//[ -]?表示空格或者连字符-匹配0次或1次
//\d{4}$表示已4位数字结尾($)
var re=/^1? ?(\d{3}|\(\d{3}\))[ -]?\d{3}[ -]?\d{4}$/;
return re.test(str);
题目链接:
https://www.w3cschool.cn/codecamp/validate-us-telephone-numbers.html