Jquery Match()IP地址?

时间:2012-10-02 12:18:13

标签: jquery regex match

我正在使用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"
            });

2 个答案:

答案 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"
});