2012-10-02 39 views
0

我正在使用jQuery脚本来验证表单域。这很好,但我想更改一个字段的验证来检查IP地址。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

刚刚又有了一个念头。是否有可能查看VAL并确定它是否为数字,然后验证为IP,如果是文本全部条目? – MacMan

+0

更改Ip的正则表达式? – CR41G14

回答

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的人(但显然没有很好地完成这项工作)。希望有所帮助!

+0

尼尔 - 感谢,似乎工作:)任何方式来看看VAL并决定它是否数字然后验证为IP,如果它的文本允许条目? – MacMan

+0

@ user1635970,是的,你应该能够在事后进行检查,假设它与IP不匹配。我会更新我的答案。 – Neil

+0

@Neil我想在我的项目中使用你的代码,如果你不介意 –

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" 
}); 
+0

谢谢我会试试这个。输入不是电子邮件,我只是复制该验证码作为示例! – MacMan