javascript RegExp 验证 url 表达式



我已经找到了很多关于这个主题的帖子,但是没有帖子处理我的特定问题。

这是我使用的正则表达式(在此网站上找到):

function validateUrl(value){
        return /[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,6}([-a-zA-Z0-9@:%_+.~#?&//=]*)/i.test(value);
}

这将验证我的 url 是否正确,直到以下一点:

mydomain.tld/mypage/this'go(es{wro[ng

我的函数返回 true,即使存在不允许的字符,例如:
'"()[]{}

我不明白为什么允许这样做。我有这个:[-a-zA-Z0-9@:%_+.~#?&//=]
在我看来应该返回"false"...

您的正则表达式几乎可以工作。在字符串mydomain.tld/mypage/this'go(es{wro[ng中,它与 mydomain.tld/mypage/this 匹配。由于您没有在两端放置锚点,因此它确实匹配(部分匹配)。

只需将其更改为:

^[-a-zA-Z0-9@:%._+~#=]{2,256}.[a-z]{2,6}([-a-zA-Z0-9@:%_+.~#?&//=]*)$
^                                                                        ^

观看现场演示

请尝试以下操作:

function validateUrl(value){
        return /^(http(s)?://)?(www.)?[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(/.*)?$/.test(value);
}

最新更新