国コードなしで電話番号を取得するには、正規表現が必要です。これにはルックアラウンドが機能するはずですが、最終的な解決策にたどり着くことができません。科目は次のとおりです。
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 の正規表現でこれを行う方法はありますか?