使用Javascript进行URL验证;我工作不好

URL validation using Javascript doesn't work well

本文关键字:工作 验证 Javascript 进行 URL 使用      更新时间:2023-09-26

我对url使用以下验证:

jQuery.validator.addMethod("urlValidatorJS", function (value, element) {
    var RegExp = (/^HTTP|HTTP|http(s)?:'/'/(www'.)?[A-Za-z0-9]+(['-'.]{1}[A-Za-z0-9]+)*'.[A-Za-z]{2,40}(:[0-9]{1,40})?('/.*)?$/);
    return this.optional(element) || RegExp.test(value);
}, "The url is incorrect");

由于某些原因,根据上面的验证,以下无效url是有效的:http://www.example.com/%20here.html(带空格的url)。

如何修复验证?

('/.*)?

你说URL中的最后一个(可选)是一个斜杠,后面跟着任意数量的任意字符。

如果您不想留出空间,请比.更具体。

首先:jQuery中已经有一个验证模块可以使用。

这将是您的正则表达式,以匹配您提到的URL(最后不要错过i标志!):

/^(https?:'/'/)(?:[A-Za-z0-9]+(['-'.][A-Za-z0-9]+)*'.)+[A-Za-z]{2,40}(:[1-9][0-9]{0,4})?('/'S*)?/i

你错过了也可能有其他地址,如http://some.other.example.com。正如在另一个答案中提到的,您的标识符.太贪婪了。对于任何非空白字符,我用'S替换了它。在正则表达式的第一部分中,您也有一些不必要的标识符,如{1}和额外的HTTP

您也可以使用类似regex101的页面来检查您的regex,并在不同的字符串上尝试它。它还解释了正则表达式的每个部分,以便您可以更好地调试它。