我有一個正則運算式來檢查文本中的電話號碼。請檢查以下。
(\d[\s-]?)?[\(\[\s-]{0,2}?\d{3}[\)\]\s-]{0,2}?\d{3}[\s-]?\d{4}
這個正則運算式作業正常,但如果我這樣寫它就不能正常作業。
- 例 1:088 11 22 458
- 例 2: 1 88 11 22 458
如何修改正則運算式來修復此錯誤?
uj5u.com熱心網友回復:
您可以 在開頭添加一個可選項,在區號中允許兩位或三位數字,并添加一個替代項以匹配兩位兩位數,然后在末尾添加一個三位數:
(?:\ ?\d[\s-]?)?[([\s-]{0,2}\d{2,3}[)\]\s-]{0,2}(?:\d{3}[\s-]?\d{4}|\d{2}[\s-]?\d{2}[\s-]?\d{3})
請參閱正則運算式演示。詳情:
(?:\ ?\d[\s-]?)?- 可選出現的可選,數字,然后是空格或連字符[([\s-]{0,2}- 零、一或兩個(,[, 空格或連字符\d{2,3}-兩位或三位數字[)\]\s-]{0,2}- 零、一或兩個),], 空格或連字符(?:\d{3}[\s-]?\d{4}|\d{2}[\s-]?\d{2}[\s-]?\d{3})- 任何一個\d{3}[\s-]?\d{4}- 三位數,一個可選的空格或-,四位數|- 或者\d{2}[\s-]?\d{2}[\s-]?\d{3}- 兩位數,可選空格或-,兩位數,可選空格或-,三位數
您可能還考慮添加數字邊界以禁止在左側(帶有負(?<!\d)向后看)和右側(帶有負向前看)有其他數字的匹配(?!\d):
(?:\ ?(?<!\d)\d[\s-]?)?[([\s-]{0,2}(?<!\d)\d{2,3}[)\]\s-]{0,2}(?:\d{3}[\s-]?\d{4}|\d{2}[\s-]?\d{2}[\s-]?\d{3})(?!\d)
請參閱此正則運算式演示。
uj5u.com熱心網友回復:
我會使用這個正則運算式:
[\ \(\[]?\d[\(\[\s-]?\d[\s-]?\d[\)\]\s-]?\d[\s-]?\d[\s-]?\d[\s-]?\d[\s-]?\d[\s-]?\d[\s-]?\d
它允許在任何地方使用分隔符。有時電話號碼是分隔符,以便更容易記住它們。
例如:
- 088 111-2-111
- (088)11-22-33-4
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/465830.html
標籤:正则表达式
上一篇:匹配規則的模式
