我正在使用jquery脚本来验证表单字段。这很好用,但我想更改一个字段的验证以检查IP地址。
我想使用的正则表达式是:
\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
如何修改以下内容以解决此问题? (这是验证如何适用于电子邮件地址)
jQuery("#Email").validate({
expression: "if (VAL.match(/^[^\\W][a-zA-Z0-9\\_\\-\\.]+([a-zA-Z0-9\\_\\-\\.]+)*\\@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)*\\.[a-zA-Z]{2,4}$/)) return true; else return false;",
message: "Should be a valid Email id"
});
答案 0 :(得分:1)
“\”字符在javascript中被视为转义符,应该加倍,因此它被解释为字面上的“\”字符。引号也必须被转义,但我发现你没有。
应用于您的正则表达式,它将是:
\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b
在您的代码的上下文中,那就是:
jQuery("#Email").validate({
expression: "if (VAL.match(/^\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b$/)) return true; else return false;",
message: "Should be a valid Email id"
});
请注意,我在开头留下了“^”,在结尾处留了“$”,这意味着你希望整个字符串与我假设的正则表达式匹配。如果不是这样,你应该删除它们。我没有测试过这个正则表达式是否符合你的意愿,但如果不是,你应该能够应用上面写的规则将它插入到上面编写的代码中。
编辑:如果您希望进行更高级的检查,例如确定用户是否尝试了IP但是失败了,或者是否完全是其他内容,那么您可以修改表达式代码,如下所示:
function isValidInput(str) {
if (str.match(/^\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b$/)) {
return true;
} else if (str.match(/[0-9]+(\.[0-9]+){2,}/)) {
return false;
} else {
return true;
}
}
jQuery("#Email").validate({
expression: "isValidInput(VAL)",
message: "Should be a valid Email id"
});
请注意,表达式现在调用现有函数“isValidInput”,因此代码不再是eval字符串,因此已删除所有转义符。第二个匹配检查<number>.<number>.<number>+
以试图捕获某人试图插入有效的IP(但显然没有做得很好)。希望有所帮助!
答案 1 :(得分:0)
假设正则表达式适用于IP地址,并假设您的IP地址输入真的是id="Email"
,那么这应该有效:
jQuery("#Email").validate({
expression: "return (VAL.match(/^[^\\W][a-zA-Z0-9\\_\\-\\.]+([a-zA-Z0-9\\_\\-\\.]+)*\\@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9_]+)*\\.[a-zA-Z]{2,4}$/));",
message: "Should be a valid Email id"
});