javascript RegExp 验证 url 表达式

javascript RegExp validate url expression

本文关键字:表达式 url 验证 RegExp javascript      更新时间:2023-09-26

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

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

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);
}