W3Cschool高階指令碼演算法(1.判斷電話號碼演算法挑戰)
判斷電話號碼演算法挑戰
問題:
如果傳入字串是一個有效的美國電話號碼,則返回 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")
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)")
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")
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);