dポイントプレゼントキャンペーン実施中!

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

A 回答 (3件)

| の書き方がおかしいのではないでしょうか。



(com|net|org|edu|gov|mil|int|info|biz|name|pro|museum|aero|coop|[a-z][a-z])

こんな風にカッコで囲ってみると良いんじゃないかと思います。
    • good
    • 0
この回答へのお礼

mizuno3さん,ありがとうございます。

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

お礼日時:2008/07/09 21:00

クライアントレベルでのメアドチェックは有効性が低いので


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

yambejpさん,ありがとうございます。

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

お礼日時:2008/07/09 21:06

・ 正規表現で「メルアドのチェック」はたいへんですね。



・ 折角、トップレベルドメイン【TLD】を並べ挙げてあるので、括弧の前にドットを入れると少し改良されるかも知れません。

... *\.(com|net|org ...
    • good
    • 0
この回答へのお礼

autyさん,ありがとうございます。

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

お礼日時:2008/07/09 21:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!