【问题标题】:mail validation with regex使用正则表达式进行邮件验证
【发布时间】:2013-07-17 06:34:49
【问题描述】:

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

这是我的代码;

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

【问题讨论】:

标签: regex validation email email-validation


【解决方案1】:

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

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

或者只是在正则表达式本身中允许 a-z

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

但请记住,检查电子邮件的有效性是一项相当困难的任务,因为允许的邮件地址范围非常广泛,它们甚至可能包含特殊字符,如 äüö 等。所以你的正则表达式并不完美,记住这一点!

在 PHP 中,我多年来一直使用 this function,它似乎总是有效。

在这种情况下,您究竟为什么使用.toString().test() 给你一个布尔值,你可以用== false 完美地检查它——你有什么理由想把它转换成字符串吗?

【讨论】:

  • 有什么正则表达式可以给我建议。它仍然无法正常工作,我认为我在那里有问题; if(reg.test(email).toString() == false)
  • 我知道这是一个简单的问题,但我是 js 新手。我们如何更改该代码?我要写什么?
  • 坦率地说我不知道​​这个函数是否可以移植到javascript。对不起。
猜你喜欢
  • 2014-05-24
  • 2020-07-22
  • 2011-05-02
  • 2014-03-03
  • 2020-02-18
  • 2012-11-23
  • 1970-01-01
相关资源
最近更新 更多