检查JavaScript字符串是否为URL
|
JavaScript中是否可以检查字符串是否为URL?
正则表达式被排除在外,因为URL最有可能被写为“ 0”。也就是说,它可能没有have1ѭ,
www
或http
。
没有找到相关结果
已邀请:
25 个回复
亥套惟间连
哩翔购
蜂佬渺
的
属性时,会设置其他各种属性。
资源 但是,如果绑定的值
不是有效的url,则这些辅助属性的值将为空字符串。 编辑:如注释中所指出:如果使用了无效的URL,则可以替换当前URL的属性。 因此,只要您不传递当前页面的URL,就可以执行以下操作:
断跑胺弄萎
构造函数:如果不抛出,则字符串是有效的URL:
术语“ URL”在RFC 3886中定义为URI。它必须以方案名称开头,并且方案名称不限于http / https。 著名的例子:
无效的网址(丢失方案)
是有效的URL,尽管不是HTTP URL
是有效的URL,主机为
;是否解决取决于您的DNS
是有效的网址,与上面相同
缔恃钨
的URL:
物崎巩
混侩闯空坷
炬卤遁蝎变
芳菱挨啡
旦彤
正如其他人指出的那样,正则表达式似乎并不是最适合验证URL的方法。
娠侈脚惮顽
田眯衅
这样的简单字符串,它也会冻结您的应用程序/页面几分钟。一些评论中已经指出了它,但是很可能并没有输入不好的值来查看它。这样的挂起使该代码无法在任何严肃的应用程序中使用。我认为这是由于代码中重复出现的不区分大小写的字符集,例如
。取出\'i \',它不会挂起,但是当然不能按预期工作。但是,即使使用了忽略大小写标志,那些测试也会拒绝允许的高unicode值。 已经提到的最好的是:
这来自Github segmentio / is-url。关于代码存储库的好处是,您可以看到测试和任何问题,以及贯穿其中的测试字符串。有一个分支将允许缺少诸如protocol29之类的字符串的协议,尽管那时您可能做出了太多假设。存储库已更新,我不打算尝试在此处保留镜像。它已分为单独的测试,以避免可被DOS攻击利用的RegEx重做(我认为您不必担心客户端js会担心,但您确实需要担心页面挂起只要访问者离开您的网站)。 我见过另外一个存储库,在dperini / regex-weburl.js中,对于isURL可能甚至更好,但是它非常复杂。它具有更大的有效和无效URL测试列表。上面简单的一个仍然通过所有正数,只阻止了一些奇怪的负数,例如
和特殊ip。 无论您选择哪种方式,都可以使用浏览器的“开发人员工具”检查器通过此功能运行该功能,该功能我已根据dperini / regex-weburl.js上的测试进行了改编。
然后测试\'a \'的字符串。 在发布看似很棒的正则表达式之前,请参阅Mathias Bynens对isURL regex进行的比较,以获取更多信息。
葛瞎说漓
闯舱酮
此函数将返回一个布尔值,无论字符串是否是URL。 例子:
讼乐
翱抹村
向具有挑战性的url进行ajax调用是可以的,但是由于
的策略,它具有各种局限性,而不是使用
的情况,因为url可能在我服务器的域之外。 使用fetch API的解决方法类似于ajax。 另一个问题是我的服务器符合
协议,并且在调用非安全网址时会引发异常。 因此,我能想到的最好的解决方案是使用trying44ѭ之类的JavaScript获取一些执行
的工具。不幸的是,我没有找到任何东西,而且不可能。我对此表示感谢。 但是最后,我有一台运行
的服务器,并且由于几乎所有请求都使用Ajax,因此我在服务器端编写了一个函数以在其中执行curl请求并返回浏览器。 关于“ stackoverflow”问题的单个URL,它将带我到
,其中daniserver.com.ar是我自己的域名。
墩瓣茅械
席酱
不用正则表达式就可以很容易地实现同一件事。
瓜唱鬼
距相镭
没有ES6
您还可以通过传递可选的
对象作为
的第二个参数来微调此函数的行为。 这是默认的“ 52”对象:
和
可以是主机数组。它们还支持正则表达式。
降女陷费券
并在js中用
进行检查 例如: your.html
your.js
蕉衫
测试:
纫合峭
我们可以预先添加缺少的协议以避免这种情况。它还无法检测到以下无效的URL。
那么,为什么要检查整个网址?我们可以只检查域。我借用了正则表达式从这里验证域。
属性对于
是空字符串,因此它也适用于此,您也可以添加IP地址验证程序。我最想坚持使用本机API,并希望它会在不久的将来开始支持所有功能。
鞋扣蚊冈借
览幕堤分