我正在嘗試驗證一個正則運算式
- 允許 10 位數字
- 如果數字以 672 開頭,那么它應該只允許總共 9 位數字
我試過下面的正則運算式
/^\d{10}$|^(672)\d{6}$/
https://regex101.com/r/0ahnKx/1
它適用于 10 位數字,但如果數字以 672 開頭,則它也允許 10 位數字。任何人都可以幫助我如何解決這個問題?謝謝!
uj5u.com熱心網友回復:
首先,您的正則運算式中的捕獲組是多余的,將模式的一部分包裹在中間^并且$僅使用錨點的單個出現是有意義的。
要解決此問題,您需要確保匹配的前三位數字\d{10}不是672,并且您可以通過負前瞻實作這一點:
/^((?!672)\d{10}|672\d{6})$/
/^(?:(?!672)\d{10}|672\d{6})$/
請參閱正則運算式演示。詳情:
^- 字串的開始(?:- 一組開始:(?!672)\d{10}- 不672觸發子串檢查,然后匹配十位數字
|- 或者672\d{6}-672和六位數
)- 小組結束$- 字串的結尾。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366147.html
標籤:正则表达式
上一篇:單擊影像以在URL字串中傳遞名稱
