如何匹配一个10位数的电话号码,该号码可能有2位数或3位数的国家代码,也可能没有.国家/地区代码不匹配



示例字符串

fgcfghhfghfgch1234567890fghfghfgh fhghghfgh+916546546165fghfghfghfgh fhfghfghfghfgh+915869327425ghfghfghfgh

我想匹配

1234567890
6546546165
5869327425

从本质上讲,我想做一些类似(?<=+d{2})?d{10}的事情。将?后面的10位数字d{10}与格式为+d{2}的国家代码进行匹配。什么是正确的正则表达式?

此外,如果国家/地区代码可能长达3位数,该怎么办。例如

+917458963214
+0047854123698 

匹配CCD_ 5和CCD_。

您期望的匹配项似乎都紧跟着一个字符而不是数字。

我建议,如果十位数字后面紧跟着一位数字,则可以选择正后方查找中的模式,并在末尾添加(?!d)前方查找,以使匹配失败(从而触发后方查找的回溯(:

(?<=(?:+d{2,3})?)d{10}(?!d)

请参阅regex演示详细信息

  • (?<=(?:+d{2,3})?)-一个正向查找,需要+和当前位置左侧的两个或三个数字或空字符串
  • d{10}-十位数
  • (?!d)-右边不允许有任何数字

但是,因为在99%的情况下,您可以访问捕获的子字符串,您应该只使用一个捕获组:

(?:+d{2,3})?(d{10})

请参阅此regex演示。您的价值观属于第1组。

相关内容

  • 没有找到相关文章

最新更新