我試圖爲JS編寫一個或多或少複雜的regEx。它通過我所有的測試,除了兩個,我不知道爲什麼。這是代碼如何正確使用JS regEx中的「或」命令?
function telephoneCheck(str) {
regEx1 = /^[1]\s(\d{3}[-]){2}\d{4}|(\d{3}[-]){2}\d{4}$/;
regEx2 = /^\d{10}$/;
regEx3 = /^[1]\s(\d{3}\s){2}\d{4}|(\d{3}\s){2}\d{4}$/;
regEx4 = /^[1]\s[(]{1}\d{3}[)]{1}\d{3}[-]{1}\d{4}|[(]{1}\d{3}[)]{1}\d{3}[-]{1}\d{4}$/;
regEx5 = /^[1]\s[(]{1}\d{3}[)]{1}\s\d{3}[-]{1}\d{4}|[(]{1}\s\d{3}[)]{1}\d{3}[-]{1}\d{4}$/;
if (regEx1.test(str) || regEx2.test(str) || regEx3.test(str) || regEx4.test(str) || regEx5.test(str)) {
return true;
}
else {
return false;
}
}
,而這些都是兩個測試它不正確地傳遞(兩者都應該回來爲false
但我得到true
代替):telephoneCheck("2(757)622-7382")
和telephoneCheck("(555-555-5555")
。 我的問題是如何正確使用|
(或)運算符(我認爲這會使我的代碼更好看)以及如何描述regEx中的表達式以匹配特定字符(例如,開始處的「1」的數量)?我做了[1]{1}
或[1]$
,但它似乎沒有工作。 感謝您的任何提示和建議!
太多問題:關注一個。 – trincot
不需要'{1}'。 – trincot