我处于无法使用Jquery的validate插件的情况。 所以我写了一个自定义验证器。但是测试功能由于某种原因不起作用。
代码运行正常,直到if (format.test(email)) {
行。请分享您的知识。提前致谢
$(document).ready(function () {
$("#MainContent_btnSubmit").click(function () {
validateEmail();
});
});
function validateEmail() {
var format = "[a-zA-Z._0-9]@[a-zA-Z.0-9].[a-zA-Z]";
var email = $("#MainContent_txtEmail").val();
if (format.test(email)) {
alert("Correct Email");
}
else {
alert("Wrong Email");
}
答案 0 :(得分:3)
首先,正则表达式不是作为字符串写的。他们有自己的文字类型:
var format = /[a-zA-Z._0-9]@[a-zA-Z.0-9].[a-zA-Z]/;
其次,每个字符类只匹配一个字符。如果没有转义,.
是通配符。此外,如果test
的任何子字符串符合该模式,email
将报告为true。所以你需要anchor模式。你可能意味着这样的事情:
var format = /^[a-zA-Z._0-9]+@[a-zA-Z.0-9]+\.[a-zA-Z]+$/;
答案 1 :(得分:2)
format
必须是RegExp
对象:
var format = new RegExp("[a-zA-Z._0-9]@[a-zA-Z.0-9].[a-zA-Z]");
此外,我怀疑你希望这个值只包含一封电子邮件,所以请使用锚点:
var format = new RegExp("^[a-zA-Z._0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]+$");
答案 2 :(得分:2)
您可以使用正则表达式"^[a-zA-Z._0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]+$"
并使用它创建一个RegExp对象
答案 3 :(得分:0)
我不确定这是否是复制粘贴错误,但是查看功能代码,可以看到您尚未关闭函数validateEmail()
答案 4 :(得分:0)
我认为你要么错过了顶部的jquery插件:
<script src='path-to-your-jQuery-plugin' type='text/javascript'></script>
或
function validateEmail() {
var format = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/;
var email = $("#MainContent_txtEmail").val();
if (format.test(email)) {
alert("Correct Email");
}
else {
alert("Wrong Email");
}
} // in your code here you missed the closing tag of the function