4

を使用している電子メール テキストを検証したいRegexKitLite.h。私は次のようにしています:

NSString *strEmail = [txtEmail text];
                NSRange range = [strEmail rangeOfRegex:@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"];
                NSLog(@"%@",range);  

今のところ、これが機能するかどうかを確認しています。しかし、2行目でエラーが発生しています。ログは何も言いません。しかし、次のような警告が 2 行目にあります。

Unknown escape sequence '\.'  

何が問題なのですか?表現がおかしいのか、それとも他に問題があるのか​​。

4

1 に答える 1

7

文字クラスでドットをエスケープする必要はありません。ほとんどの正規表現エンジンはこの種のエラーを無視しますが、Objective C はより厳密なようです。これを試して:

rangeOfRegex:@"^[a-zA-Z][\w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z.]*[a-zA-Z]$"

ただし (問題とは関係ありませんが)、これはかなり奇妙な電子メール検証正規表現です。多くの有効な電子メール アドレスを拒否し、多くの無効な電子メール アドレスを許可するからです。ここで何を目指しているのかわかりませんが、正規表現の検証に厳密になりすぎず、実際にそのアドレスに電子メールを送信して検証を行い、失敗するかどうかを確認することをお勧めします。

于 2011-07-25T05:52:13.717 に答える