示例字符串
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组。