web-dev-qa-db-ja.com

Jquery値の一致正規表現

私はJQuery経由で電子メールの入力を検証しようとしています:

私のJQuery

<script>
/* <![CDATA[ */
  jQuery(function(){
   $( ".mail" ).keyup(function() {
   var VAL = $(this).val();
   var email = new RegExp(^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$);

   if(VAL.test(email)){
   alert('Great, you entered an E-Mail-address');
   }
   });
  });
  /* ]]> */
  </script>

[email protected]と入力しても、これは警告を発しません。すでに.test()と.match()を試しましたが、何が間違っていましたか?

48
JSHelp
  • RegExpに文字列を渡すか、//構文を使用して正規表現を作成します
  • regex.test(string)ではなく、string.test(regex)を呼び出します

そう

jQuery(function () {
    $(".mail").keyup(function () {
        var VAL = this.value;

        var email = new RegExp('^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$');

        if (email.test(VAL)) {
            alert('Great, you entered an E-Mail-address');
        }
    });
});
75
Arun P Johny

これに変更します。

var email = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;

これは、大文字小文字を区別しないことを意味するiフラグが渡される正規表現リテラルです。

電子メールアドレスの検証はhard(これを示す正規表現の習得の最後に4ページまたは5ページの正規表現があります)であり、表現がすべての有効な電子メールアドレスをキャプチャするわけではないことに注意してください。

12
Sean Bright