簡體   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