[英]How to match either 0 or + followed by 1 to 3 digit number at the beginning but not both?
我有以下正則表達式來檢查手機號碼
^(0\d{10,15})$|(?!\1)(\+\d{1,3}\d{10,15})$
字符串應匹配開頭的 0,后跟 10 到 15 位數字
或(但不是兩者)
以+
開頭的字符串,由 1 到 3 位國家代碼后跟 10 到 15 位數字
第一個條件匹配,但帶有 +[country-code] 的數字不匹配
你需要使用
^(?:0|\+[1-9]\d{0,2})\d{10,15}$
詳情:
^
- 字符串的開頭(?:0|\+[1-9]\d{0,2})
- 0
或+
,一個非零數字 ( [1-9]
),然后是零,一個或兩個數字 ( \d{0,2}
)\d{10,15}
- 10 到 15 位數字$
- 字符串結束。請參閱正則表達式演示。
另一種變體可能是
^(?:0\d{10,15}|\+\d{11,18})$
^
字符串開頭(?:
非捕獲組
0\d{10,15}
匹配0
和 10-15 位數字|
或者\+\d{11,18}
匹配+
和 11-18 位數字)
關閉非捕獲組$
字符串結尾 let regex = /^(?:0|\+\d{1,3}?)\d{10,15}$/; console.log(regex.test("01234567890")); console.log(regex.test("0 1234567890")); console.log(regex.test("+91 1234567898765")); console.log(regex.test("+91123456789876567576654765675576"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.