首页 > 解决方案 > 如何在开头匹配 0 或 + 后跟 1 到 3 位数字,但不能同时匹配两者?

问题描述

我有以下正则表达式来检查手机号码

^(0\d{10,15})$|(?!\1)(\+\d{1,3}\d{10,15})$

字符串应匹配开头的 0,后跟 10 到 15 位数字

或(但不是两者)

+以 a开头的字符串, 1 到 3 位国家代码,后跟 10 到 15 位数字

第一个条件匹配,但带有 +[country-code] 的数字不匹配

标签: javascriptregex

解决方案


另一种变体可能是

^(?:0\d{10,15}|\+\d{11,18})$
  • ^字符串的开始
  • (?:非捕获组
    • 0\d{10,15}匹配0和 10-15 位数字
    • |或者
    • \+\d{11,18}匹配+和 11-18 位数字
  • )关闭非捕获组
  • $字符串结束

正则表达式演示


推荐阅读