[英]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.