0

次のスクリプトを使用してメールアドレスの形式を確認しようとしていますが、どこかで間違っています。パターンを一致させようとすると、reg_1falsestr_1 , str_2, str_3になります。何故ですか ?

var reg_1 = /^[a-zA-Z][0-9_.][@]{1}[a-zA-Z0-9][.]{1}[a-zA-Z0-9]$/;
var id_1 = "suhailgupta03@gmail.com";
var id_2 = "gupta.suhail@rediff.com";
var id_3 = "suhail_gupta03@ovi.com";

document.write(reg_1.test(id_1));
document.write("<br / >" + reg_1.test(id_2));
document.write("<br / >" + reg_1.test(id_3));
4

3 に答える 3

2

文字クラスの表記を誤解しているようです[...]。たとえば、[a-zA-Z][0-9_.]は「文字a-zまたはA-Zの後に数字0-9またはアンダースコア_またはドットが続く」ことを意味し.ます。

私はあなたが望むものだと思います:

var reg_1 = /^[a-zA-Z0-9_.]+@[a-zA-Z0-9]+\.[a-zA-Z0-9]+$/;

本当に必要な変更に加えて、少しクリーンアップも行いました。具体的には[@]、just @(文字クラスでラップする理由はありませんでした) と[.](\.同様に、." 「任意の文字」ではなくドット」) を削除し、{1}(とにかく暗黙的であるため) を削除しました。

(ただし、これは汎用の電子メール アドレス検証正規表現ではないことに注意してください。電子メール アドレスは実際には非常に複雑であり、実際にアドレスを検証する唯一の方法は、それに電子メールを送信して、届きます!)

于 2013-02-24T04:47:21.200 に答える
0

これをしないでください。私は実際、これが欠陥のあるアプローチである理由についてのブログ投稿を書いていました: How to (not) Validate an Email Address

要約すると、次のようなもので十分です。

var emailValidation = /.+@.+\..+/;
console.log(emailValidation.exec("user@example.com") != null); // Result: "true"
console.log(emailValidation.exec("www.example.com") != null); // Result: "false"
于 2013-02-24T04:47:12.557 に答える
0

1 つには、2 文字で始まり、その後に @ 記号が続く文字列を探していますが、そのように始まるメールはありません。

于 2013-02-24T04:49:37.557 に答える