[英]Why is this javascript url validator failing?
我有以下代码来验证是否有人在文本框中输入了“有效”网址:
function validateURL(textval) {
var urlregex = new RegExp(
"^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.)");
return urlregex.test(textval);
}
用户收到错误消息,错误消息中返回的错误值似乎是有效的urL
http://a.website.com/issues/i#browse/TEST-111
有人可以确认为什么此示例无法通过“有效网址”测试吗?
有人可以确认为什么此示例无法通过“有效网址”测试吗?
正则表达式的主要问题是www.
模式中必须包含部分。
如果要使其可选,请使用?
修饰符周围有一个组( (?:www\\.)?
):
^(?:(?:(?:ftp|https?):\/\/)?)(?:www\.)?[0-9A-Za-z]+(?:\.[0-9A-Za-z]+)*
这将与http://a.website.com
部分匹配。 要匹配整个字符串,可以使用:
^(?:(?:(?:ftp|https?):\/\/)?)(www\.)?[0-9A-Za-z]+(?:\.[0-9A-Za-z]+)*(?:\/[^\/]*)*$
观看演示
var re = /^(?:(?:(?:ftp|https?):\\/\\/)?)(www\\.)?[0-9A-Za-z]+(?:\\.[0-9A-Za-z]+)*(?:\\/[^\\/]*)*$/; var str = 'http://a.website.com/issues/i#browse/TEST-111'; if ((m = re.exec(str)) !== null) { document.getElementById("res").innerHTML = m[0]; }
<div id="res"/>
您的正则表达式要求主机名部分以www.
开头www.
(一般来说,这不是URL的要求)。 您正在测试的URL不包含www.
。
正则表达式损坏的原因还有很多(您不能测试www.
之后的第一个字符,尝试这样做会禁止URL中允许的许多字符,等等),但这就是为什么您拥有的URL是“过去了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.