我想验证以下类型的URL:
www.google.com
http://www.google.com
google.com
使用一个正则表达式,这是可以实现的吗?如果可以,请分享一个JavaScript的解决方案。
请注意,我只希望底层协议是HTTP或HTTPS。此外,目前的主要问题是,我们如何在JavaScript中使用一个正则表达式Map所有这三种模式?它不必检查页面是否处于活动状态。如果用户输入的值与上面列出的三种情况中的任何一种相匹配,它应该返回true
,另一方面,如果没有,它应该返回false
。
6条答案
按热度按时间aydmsdu91#
无需使用第三方库。
检查字符串是否为有效的URL
编辑
如果您需要将协议限制为一系列协议,可以执行以下操作
编辑
由于
parse
的贬值,代码被简化了一些。为了解决仅协议测试返回true
的问题,我不得不说这个实用函数是一个模板。你可以很容易地将它应用到你的用例中。上面提到的问题在url.host !== ""
的一个简单测试中得到了解决gtlvzcf82#
有一个名为**valid-url**的软件包
安装:
如果你想要一个简单的正则表达式-check this out
68bkxrlz3#
使用url模块似乎可以达到这个目的。
Node.js v15.8.0文档- url模块
w46czmvw4#
“valid-url”npm包对我不起作用。它返回了valid,for一个无效的url。对我起作用的是“url-exists”
q43xntqr5#
另一个简单的方法是使用Node.JS DNS模块。
DNS模块提供了一种执行名称解析的方法,使用它可以验证url是否有效。
这样,您就可以检查url是否有效以及它是否存在
pgvzfuti6#
我现在也遇到了同样的问题,Pouya的答案可以很好地解决这个问题,我不使用它的唯一原因是我已经在使用NPM包validate.js,它可以处理URL。
正如您在文档中看到的,URL验证器基于gist使用正则表达式,因此您可以使用它而无需使用整个包。
我不是正则表达式的忠实粉丝,但是如果您正在寻找一个正则表达式,最好使用流行包中使用的RegEx。