繁体   English   中英

使用Javascript进行URL验证的效果不佳

[英]URL validation using Javascript doesn't work well

我对网址使用以下验证:

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之类的页面来检查您的正则表达式,并在其他字符串上进行尝试。 它还说明了正则表达式的每个部分,以便您可以对其进行更好的调试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM