“\ “在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的人(但显然没有很好地完成这项工作)。希望有所帮助!
刚刚又有了一个念头。是否有可能查看VAL并确定它是否为数字,然后验证为IP,如果是文本全部条目? – MacMan
更改Ip的正则表达式? – CR41G14