我有以下代碼。我正在嘗試讓常規快遞測驗電話號碼以進行驗證。使用當前引數,函式應該回傳正值,但它沒有,我不知道為什么。
function telephoneCheck(str) {
let reg = /^[\d]{0,1}[\w]{0,1}[(]{0,1}[\d]{3}[-)\w]{0,2}[\d]{3}[-\w]{0,1}[\d]/;
return reg.test(str);
}
console.log("function: " telephoneCheck("1 (555) 555-5555"));
誰能看到我錯過了什么?
uj5u.com熱心網友回復:
首先,將所有\w(匹配任何字母、數字或下劃線)替換為\s(匹配任何空格、制表符或換行符)。我相信你不會在電話號碼中寫信。其次,您需要{0,4}在 Regex 的末尾添加一個量詞,就像您在 Regex 的其他位置所做的一樣。
所以最終的正則運算式將是 ^[\d]{0,1}[\s]{0,1}[(]{0,1}[\d]{3}[-)\s]{0,2}[\d]{3}[-\s]{0,1}[\d]{0,4}
uj5u.com熱心網友回復:
因為你的正則運算式是無稽之談。
- 不需要
[]單個組([\d]{0,1}可以只是\d? \w不匹配空格,只是[a-z0-9]在一般情況下- 你匹配開始
(但結束)可以跟隨-或任何\w
function telephoneCheck(str) {
let reg = /^\d?\s?\(?[\d-] \)?\s?\d /;
return reg.test(str);
}
console.log("function: " telephoneCheck("1 (555) 555-5555"));
uj5u.com熱心網友回復:
- 您需要替換
\w用\s的空白 - 你需要轉義括號
\(和\) - 除非您希望非正統的 1 (555)-555-5555 為真
[-)\w]{0,2},[-\)]{0,1}[\s]{0,1}否則您需要更改為。 - 最終
[\d]應該是[\d]{4}因為您希望最后有 4 位數字。 - 您可以替換
{0,1}與?評估單個字符是可選的時候。 - 單個字符不需要括號。
這是生成的代碼:
function telephoneCheck(str) {
let reg = /^\d?\s?\(?\d{3}[-\)]{0,1}\s?\d{3}[-\s]?\d{4}/;
return reg.test(str);
}
console.log(telephoneCheck("1 (555)555-5555")); // true
console.log(telephoneCheck("1 (555)5555555")); // true
console.log(telephoneCheck("(555)555-5555")); //true
console.log(telephoneCheck("15555555555")); //true
console.log(telephoneCheck("1 (555)555- 5555")); // false
console.log(telephoneCheck("1 (555)-555-5555")); // false
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357347.html
標籤:javascript 正则表达式
上一篇:單擊錨鏈接時關閉覆寫全屏選單
