簡體   English   中英

如何在開頭匹配 0 或 + 后跟 1 到 3 位數字,但不能同時匹配兩者?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM