Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式无法识别无效电子邮件_Javascript_Html_Regex_Email - Fatal编程技术网

Javascript 正则表达式无法识别无效电子邮件

Javascript 正则表达式无法识别无效电子邮件,javascript,html,regex,email,Javascript,Html,Regex,Email,我正在尝试验证表单元素的电子邮件地址。我熟悉正则表达式,因此我相信该部分是正确的,但我希望它在输入的电子邮件无效时显示警报。我的问题是,即使我输入了无效的电子邮件地址而不是弹出警报窗口,表单也会提交 javascript中的正则表达式函数: function validateEmail() { var myEmailRegEx = /\w+@\w+\.[a-z]|[A-Z]|\d|\.|-{2,}/ if(

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

javascript中的正则表达式函数:

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();" />



为了清楚起见,您所做的工作的问题是,您将一个对象交给正则表达式进行测试,它总是返回true(尽管很奇怪)。通过.value,我们得到字段所持有的字符串,然后根据该字符串测试正则表达式

你应该用

var myEmailRegEx = new RegExp("/\w+@\w+\.[a-z]|[A-Z]|\d|\.|-{2,}")
myEmailRegEx.test(document.getElementById("EmailAddress").value)
假设电子邮件地址以id=“my\u form”的形式出现。为了防止默认提交该表单,您可以使用

$("#my_form").preventDefault();
如果电子邮件是真的,你可以提交表格

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

应该是这样。我希望您知道在何处插入这些代码片段:-)

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

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



上述方法将在该字段中的值发生变化时调用您的
validateEmail
函数。

虽然这不能直接回答您的问题,但应该注意的是,您的正则表达式返回了大量的假阴性。例如,和地址中带有
的电子邮件地址,例如我的个人电子邮件地址,
。last@gmail.com

一个好的开始就是开始

为方便起见,我将复制下面的“基本”电子邮件正则表达式

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
我们可以这样做:

<input type="email" />


就这样吧。

好的。现在if语句起作用了。谢谢但是,当用户在警报窗口上单击“确定”时,表单仍会提交。如果验证失败,是否有办法取消提交?您应该使用“防止默认”功能来防止提交。我将只是做一个编辑。顺便说一句,你能接受我的回答吗?我会的。上面说我必须等5分钟才能接受答案。只要它允许我,我会的。