1. 程式人生 > >W3Cschool高階指令碼演算法(1.判斷電話號碼演算法挑戰)

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")

應該返回 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);

題目連結: