至尊寶的傳說
2021-12-12 10:37:52
我需要驗(yàn)證電話號碼 (TN) 分機(jī)(僅限分機(jī))。擴(kuò)展名可以是 3-6 位長度和 3 位擴(kuò)展名,不應(yīng)跟隨 11。是的,擴(kuò)展名不應(yīng)包含特殊字符和全零。例如:911、311等,我們已經(jīng)寫了下面的一個。(?!0+$)[0-9](?!.*11).[0-9]*$上面的問題是對于 311、211 --> 驗(yàn)證通過。對于 38311, 2311 --> 那些是 4 位和 5 位長度擴(kuò)展,可以后綴為“11”。但是上面的模式是不允許的。我怎樣才能做到這一點(diǎn)?
2 回答
12345678_0001
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個贊
你可以使用:
(?!^((0+)|(\d11))$)(?=^\d{3,6}$).*(?!^((0+)|(\d11))$)- 從頭到尾確保它不是全零,也不是數(shù)字后跟11(?=^\d{3,6}$)- 從頭到尾確保我們處理的是 3 到 6 位數(shù)字.*- 如果之前的驗(yàn)證通過,那么可以安全地獲取所有內(nèi)容
https://regex101.com/r/eIVvvX/1
慕運(yùn)維8079593
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個贊
對于檢查非零,您可以簡單地使用>運(yùn)算符,對于其余規(guī)則,您可以使用此模式

let data = ['911','311','38311','2311','000000','123111', '112']
data.forEach(v=>{
console.log(v, '\t' , v > 0 && /^(?:(?:(?!11$)\d){3}|\d{4,6})$/.test(v))
})
要檢查非零,您也可以使用正則表達(dá)式,但我個人更喜歡上述方法
^(?!^0+$)(?:(?:(?!11$)\d){3}|\d{4,6})$
添加回答
舉報
0/150
提交
取消
