- ベストアンサー
メルアドをチェックする正規表現?
こんにちは,よろしくお願いします。JavaScriptでメルアドをチェックしようと次のような文字列を,patternという変数に代入して, var pattern = "^[a-z0-9\-_.]+@[a-z\-]+(\.[a-z\-]+)*com|net|org|edu|gov|mil|int|info|biz|name|pro|museum|aero|coop|[a-z][a-z]$"; 次のようにチェックしたのですが, if(mail.match(pattern)){・・・ "aa"など,2つ以上の小文字のアルファベット文字列にマッチしてしまいます。つまり,@が入っていなくてもマッチしてしまいます。実は,正規表現の解説書を見てこのような文字列としたのですが,JavaScriptでは不都合な点があるのでしょうか?ご存知の方がいらっしゃいましたら,ご教授ください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
| の書き方がおかしいのではないでしょうか。 (com|net|org|edu|gov|mil|int|info|biz|name|pro|museum|aero|coop|[a-z][a-z]) こんな風にカッコで囲ってみると良いんじゃないかと思います。
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
クライアントレベルでのメアドチェックは有効性が低いので 最低限のものにしておけばいいでしょう。 英数字特定記号のみで構成されたアカウントと、@がひとつ、ドメインには 一つ以上の.が必要・・・程度ですね。 実際、メアドのチェックにはサーバー側でドメインの有効性やアライブの チェックする処理を入れますが、実際にそのメアドが有効かどうかは結局は メールを送る処理をしてみないとわからないのですから・・・
お礼
yambejpさん,ありがとうございます。 yambejpさんがおっしゃるとおり,メルアドチェックがとても難しいものであることがわかりました。 ありがとうございました。今後ともよろしくお願いします。
- auty
- ベストアンサー率58% (284/486)
・ 正規表現で「メルアドのチェック」はたいへんですね。 ・ 折角、トップレベルドメイン【TLD】を並べ挙げてあるので、括弧の前にドットを入れると少し改良されるかも知れません。 ... *\.(com|net|org ...
お礼
autyさん,ありがとうございます。 autyさんがおっしゃる様にして,いろいろ試してみましたが,mizuno3さんのように括弧のみを挿入した場合との変化が確認できませんでした。もう少し勉強をしたいと思います。 今後ともよろしくお願いします。ありがとうございました。
お礼
mizuno3さん,ありがとうございます。 mizuno3さんがおっしゃるとおり,()を入れれば,@の入力をチェックできるようになりました。 ありがとうございました。