簡體   English   中英

為什么此javascript網址驗證程序失敗?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM