【发布时间】:2013-06-30 02:41:04
【问题描述】:
我需要一个正则表达式来获取没有国家代码的电话号码(如果有的话)。看起来环视应该可以解决这个问题,但我无法找到最终的解决方案。以下是主题:
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 匹配,如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 中使用正则表达式来做到这一点?
【问题讨论】:
标签: objective-c regex nsregularexpression