RegEx Not Recognizing Invalid Email
我正在尝试验证表单元素的电子邮件地址。我熟悉正则表达式,因此我相信该部分是正确的,但我希望它在输入的电子邮件无效时显示警告。我的问题是,即使我输入了无效的电子邮件地址而不是弹出警报窗口,表单也会提交。
javascript中的regex函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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:
1 2 3 | <input type="text" name="Email" id="EmailAddress" size="50" /> <br /> <input type="submit" value="Submit Email" onClick="validateEmail();" /> |
号
可以这样做:
1 | <input type="email" /> |
。
完成它。
为了清晰起见,您所做的事情的问题在于,您将一个对象交给regex进行测试,它总是返回true(尽管很奇怪)。使用.value,我们得到字段保存的字符串,然后用它测试regex。
你应该使用,
1 2 | var myEmailRegEx = new RegExp("/\w+@\w+\.[a-z]|[A-Z]|\d|\.|-{2,}") myEmailRegEx.test(document.getElementById("EmailAddress").value) |
假设电子邮件地址以id="my_form"的形式存在。为了防止默认提交该表单,您将使用
1 | $("#my_form").preventDefault(); |
号
如果电子邮件被证明是真的,那么你可以提交表单。
1 2 3 | if(myEmailRegEx.test(document.getElementById("EmailAddress").value)){ document.getElementById("mu_form").submit(); } |
应该就是这样。我希望您知道在哪里插入这些代码片段:—)
虽然这并不能直接回答你的问题,但应该注意的是,你的regex返回了很多错误的否定。例如,地址中带有
一个好的起点是从这里开始
为了方便起见,我将复制下面的"基本"电子邮件regex。
1 | ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$ |
尝试在包含电子邮件的输入字段上使用
1 2 3 | <input type="text" name="Email" id="EmailAddress" size="50" onchange="validateEmail();" /> <br /> <input type="submit" value="Submit Email"/> |
。
当该字段中的值发生变化时,上述方法将调用您的