• ベストアンサー

メルアドをチェックする正規表現?

こんにちは,よろしくお願いします。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では不都合な点があるのでしょうか?ご存知の方がいらっしゃいましたら,ご教授ください。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

| の書き方がおかしいのではないでしょうか。 (com|net|org|edu|gov|mil|int|info|biz|name|pro|museum|aero|coop|[a-z][a-z]) こんな風にカッコで囲ってみると良いんじゃないかと思います。

emikouji
質問者

お礼

mizuno3さん,ありがとうございます。 mizuno3さんがおっしゃるとおり,()を入れれば,@の入力をチェックできるようになりました。 ありがとうございました。

その他の回答 (2)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

クライアントレベルでのメアドチェックは有効性が低いので 最低限のものにしておけばいいでしょう。 英数字特定記号のみで構成されたアカウントと、@がひとつ、ドメインには 一つ以上の.が必要・・・程度ですね。 実際、メアドのチェックにはサーバー側でドメインの有効性やアライブの チェックする処理を入れますが、実際にそのメアドが有効かどうかは結局は メールを送る処理をしてみないとわからないのですから・・・

emikouji
質問者

お礼

yambejpさん,ありがとうございます。 yambejpさんがおっしゃるとおり,メルアドチェックがとても難しいものであることがわかりました。 ありがとうございました。今後ともよろしくお願いします。

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

・ 正規表現で「メルアドのチェック」はたいへんですね。 ・ 折角、トップレベルドメイン【TLD】を並べ挙げてあるので、括弧の前にドットを入れると少し改良されるかも知れません。 ... *\.(com|net|org ...

emikouji
質問者

お礼

autyさん,ありがとうございます。 autyさんがおっしゃる様にして,いろいろ試してみましたが,mizuno3さんのように括弧のみを挿入した場合との変化が確認できませんでした。もう少し勉強をしたいと思います。 今後ともよろしくお願いします。ありがとうございました。

関連するQ&A