RegEx无法识别无效的电子邮件

时间:2014-03-17 19:32:21

标签: javascript html regex email

我正在尝试验证表单元素的电子邮件地址。我熟悉正则表达式,所以我认为该部分是正确的,但我希望它在输入的电子邮件无效时显示警告。我的问题是,即使我输入无效的电子邮件地址而不是弹出警报窗口,表单也会提交。

javascript中的RegEx函数:

function validateEmail()
            {
                var myEmailRegEx = /\w+@\w+\.[a-z]|[A-Z]|\d|\.|-{2,}/

                if(myEmailRegEx.test(document.getElementById("EmailAddress")))
                {
                    return true;
                }
                else
                {
                    alert("That is not a valid email address");
                    return false;
                }
            }

表单HTML:

<input type="text" name="Email" id="EmailAddress" size="50" />
        <br />
        <input type="submit" value="Submit Email" onClick="validateEmail();" />

4 个答案:

答案 0 :(得分:1)

为了清楚起见,你正在做的问题是你给了一个正则表达式的对象进行测试,它总是返回true(虽然很奇怪)。使用.value,我们得到该字段所持有的字符串,然后针对它测试正则表达式。

你应该使用,

var myEmailRegEx = new RegExp("/\w+@\w+\.[a-z]|[A-Z]|\d|\.|-{2,}")
myEmailRegEx.test(document.getElementById("EmailAddress").value)

假设电子邮件地址存在于id =“my_form”的表单中。要阻止默认提交该表单,请使用

$("#my_form").preventDefault();

如果电子邮件是真的,您可以提交表单。

if(myEmailRegEx.test(document.getElementById("EmailAddress").value)){
   document.getElementById("mu_form").submit();
}

应该是它。我希望你知道在哪里插入这些代码片段: - )

答案 1 :(得分:1)

可以这样做:

<input type="email" />

并完成它。

答案 2 :(得分:0)

尝试在输入字段中使用onchange事件包含电子邮件。例如:

<input type="text" name="Email" id="EmailAddress" size="50" onchange="validateEmail();" />
<br />
<input type="submit" value="Submit Email"/>

只要值在该字段中发生变化,上述方法就会调用validateEmail函数。

答案 3 :(得分:0)

虽然这并没有直接回答你的问题,但应该注意你的正则表达式会返回很多假阴性。例如,地址中包含.的电子邮件地址,例如我的个人电子邮件地址first.last@gmail.com

一个好的起点是开始here

我将复制&#34;基本&#34;为方便起见,请在下方发送电子邮件正则表达式。

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