Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Match()IP地址?_Jquery_Regex_Match - Fatal编程技术网

Jquery Match()IP地址?

Jquery Match()IP地址?,jquery,regex,match,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脚本验证表单字段。这很有效,但我想更改一个字段的验证以检查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
我如何修改下面的内容来处理此问题?(这是电子邮件地址验证的工作方式)


假设regex适用于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"
});
“\”字符在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字符串,因此所有转义都已删除。第二个匹配项检查
。+
,试图捕获试图插入有效IP的人(但显然没有很好地完成)。希望有帮助

只是有另一个想法。是否可以查看VAL并确定它是否是数字,然后验证为IP,如果它是所有条目的文本?谢谢,我会尝试这个。输入不是电子邮件,我只是复制验证代码作为示例!Neil-谢谢,这似乎有效:)有没有办法查看VAL并确定它是否为数字,然后验证为IP,如果它是文本,则允许输入?@user1635970,是的,您应该能够在事后进行检查,假设它与IP不匹配。我会更新我的答案。@Neil如果你不想,我想在我的项目中使用你的代码mind@D.Tate绝对不是。我认为这是一种恭维
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"
});