-1

正規表現でメールの検証を行いたいのですが、うまくいきません。どこが間違っていますか? 通常は機能していますが、正規表現コントロールを配置すると、入力したメールがこの正規表現形式で有効になっていることがわかりません。

これが私のコードです。

index.jsp

 <head>
<title>Mail Control From Db</title>
<script type="text/javascript" src="jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="check.js"></script>
</head>

<body>

<div align="left">
<form name="chkForm" id="chkForm" method="post"  >
    <table>  
            <tr>
                    <td>Email</td>
                    <td>
                    <input type="text" name="email" id="email" size="20"  ></td>
                    <td>
                    <div id="emailInfo" align="left"></div>
                    </td>
            </tr>

    </table>
</form>
</div>

</body>
</html>

check.js

$(document).ready(function()
 {    
 var myForm = $("#chkForm"), email = $("#email"), emailInfo = $("#emailInfo");     


 //send ajax request to check email          
 email.blur(function()
 {          
 $.ajax({
    type: "POST",
    data: "email="+$(this).attr("value"),
    url: "check.jsp",

    beforeSend: function()
    {
        emailInfo.html("<font color='blue'>Kontrol Ediliyor..</font>");
    },//end beforeSend: function()



    success: function(data)
    {                   
        var reg = /\S+@\S+\.\S+/;


        if (reg.test(email.val()))
        {
            var checkData = data.toString();
                if(checkData == 0)
                {  
                    emailok = false;
                    emailInfo.html("<font color='red'>Mail in use</font>");
                }//end if(checkData == 0)
                else if(checkData == 1)
                {
                    emailok = true;
                    emailInfo.html("<font color='green'>Mail is not in use</font>");
                }//end else if(checkData == 1)

        }//end if (reg.test(email.val()))

        else
        {
            emailInfo.html("<font color='red'>ınvalid mail</font>");
        }//end else
  }// end success: function(data)


 });
 });//end email.blur(function()
 });//end $(document).ready(function()

check.jsp に問題がありました。そしてそれを解決しました。

  1. 問題は正規表現に関するものです。正規表現はfalseでした。
  2. 条件は偽でした。if (reg.test(email.val())) で変更します。
4

1 に答える 1

0

正規表現では大文字のみが許可されるため、TEXT@EXAMPLE.COM は問題ありませんが、test@example.com は問題ありません。case-insensitive-flag を正規表現に追加することで変更できます

/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i

または単に正規表現自体で az を許可する

/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/

ただし、許可されているメールアドレスの範囲は非常に広く、äüö などの特殊文字が含まれている可能性があるため、電子メールの有効性を確認するのは非常に難しい作業であることに注意してください。したがって、正規表現は完璧ではありません。マインド!

PHP では、この関数を何年も使用していましたが、常に機能しているように見えました。

.toString()この場合、なぜ正確に使用しているのですか?.test()完全にチェックできるブール値を提供します== false-これを文字列に変換する理由はありますか?

于 2013-07-17T06:41:51.453 に答える