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