-1

我想用正则表达式进行邮件验证,但它不起作用。我的错误在哪里?它通常可以工作,但是当我放置一个正则表达式控件时,它永远不会看到是的,您输入的邮件已启用此正则表达式格式。

这是我的代码;

索引.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>

检查.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. 问题是关于正则表达式。正则表达式是错误的。
  2. 条件为假。我用 if (reg.test(email.val())) 改变它。
4

1 回答 1

0

您的正则表达式只允许大写字母,因此 TEXT@EXAMPLE.COM 可以,但 test@example.com 不行。您可以通过将不区分大小写标志添加到您的正则表达式来更改它

/^[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 回答