私はかなり長い間この問題に立ち往生していて、通常のグーグル検索で適切な解決策を見つけることができませんでした。文字列の形式を評価しようとしています。より正確には、文字列がカナダの郵便番号であるかどうかを確認しています。
ブログを持っているオタクのおかげで、私はこの正規表現から始めました
^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$
その後、次のようにNSRegularExpressionのインスタンスを作成しました。
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[ABCEGHJKLMNPRSTVXY]{1}\\d{1}[A-Z]{1} *\\d{1}[A-Z]{1}\\d{1}$" options:NSRegularExpressionCaseInsensitive error:&error];
エスケープ用のバックスラッシュが追加されています。
それからNSPredicate
正規表現で作りました
NSPredicate *regextest = [NSPredicate
predicateWithFormat:@"SELF MATCHES[cd] %@", regex];
そして最後に、文字列自体を評価しています
[regextest evaluateWithObject:@"G2G 2S2"]
その最後の行で、例外がスローされます。
NSInvalidArgumentExceptionオブジェクトから正規表現を作成できません
NSRegularExpression:0x81e1bb0 ^ [ABCEGHJKLMNPRSTVXY] {1} \ d {1} [AZ] {1} * \ d {1} [AZ] {1} \ d {1}$0x1。
私はそれを理解することができません=/私は正規表現テスターで正規表現自体をテストしました、そしてそれは大丈夫です、そして私がグーグルでチェックしたことからそれは文字列評価がどのように行われるべきかです。私はここで迷っています。誰かアイデアがありますか?