我需要一个正则表达式来获取没有国家代码的电话号码,如果他们在那里的话。看起来环顾四周应该适用于此,但我不能完全得到最终的解决方案。以下是主题:
In-country: 0008003428573
Outside: +91 4058 825058
With dots: +91.88.4732.1354
所需的匹配是:
8003428573
4058 825058
88.4732.1354
我知道我可以(?!91)
用来避免匹配91
,例如
(?!91)[1-9][-. 0-9]{8,11}[0-9](?![0-9])
...但随后它与1
like匹配1 4058 825058
。
在 Perl 中进行测试时,我还找到了一个使用 if-then 条件的完整解决方案:
(?!91)(?(?=1)(?<!9)|)[1-9][-. 0-9]{8,11}[0-9](?![0-9])
但后来发现它不适用于Objective C中的NSRegularExpression。
该解决方案不能使用组,因为对于由相同代码处理的不同情况,我有多个正则表达式。代码在某些情况下不能使用第 1 组,在其他情况下不能使用第 2 组。除非没有办法用正则表达式解决这个问题。`91 不得出现在整体比赛中。
有没有办法用 Obj-C 中的正则表达式来做到这一点?