gpt4 book ai didi

javascript - URL 验证 - 接受没有协议(protocol)的 URL

转载 作者:数据小太阳 更新时间:2023-10-29 06:03:49 26 4
gpt4 key购买 nike

我的应用程序中有一个基本的 URL 验证。现在我正在使用以下代码。

//validates whether the given value is 
//a valid URL
function validateUrl(value)
{
var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
return regexp.test(value);
}

但是现在它不接受没有协议(protocol)的 URL。对于前。如果我提供 www.google.com 它不接受它。我如何修改 RegEx 以使其接受无协议(protocol)的 URL?

最佳答案

这是一个用于匹配 URL 的大而长的正则表达式:

(?i)\b((?:(?:[a-z][\w-]+:)?(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

它的扩展版本(以帮助使其易于理解):

(?xi)
\b
( # Capture 1: entire matched URL
(?:
(?:[a-z][\w-]+:)? # URL protocol and colon
(?:
/{1,3} # 1-3 slashes
| # or
[a-z0-9%] # Single letter or digit or '%'
# (Trying not to match e.g. "URI::Escape")
)
| # or
www\d{0,3}[.] # "www.", "www1.", "www2." … "www999."
| # or
[a-z0-9.\-]+[.][a-z]{2,4}/ # looks like domain name followed by a slash
)
(?: # One or more:
[^\s()<>]+ # Run of non-space, non-()<>
| # or
\(([^\s()<>]+|(\([^\s()<>]+\)))*\) # balanced parens, up to 2 levels
)+
(?: # End with:
\(([^\s()<>]+|(\([^\s()<>]+\)))*\) # balanced parens, up to 2 levels
| # or
[^\s`!()\[\]{};:'".,<>?«»“”‘’] # not a space or one of these punct chars
)
)

这些都来自this page , 但略有修改以使协议(protocol)适当可选 - 您应该阅读该页面以帮助理解它在做什么,它还有一个仅匹配基于 Web 的 URL 的变体,您可能也想看看。

关于javascript - URL 验证 - 接受没有协议(protocol)的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com