JavaScript中的URI验证

JavaScript中的URI验证,javascript,android-2.1-eclair,Javascript,Android 2.1 Eclair,通过只使用JavaScript来验证URI在Android上是否有效的可靠方法是什么(不必是正则表达式,是吗?) 也就是说,在Android SDK端,检查不是用Java完成的;它使用JavaScript在网页中完成 编辑:所谓“在Android上工作”,我的意思是,Android可以找到一个使用该URI响应意图的活动。Javascript从来没有后端那么健壮,但有很多体面的正则表达式 这在这里的另一篇文章中有介绍 我认为最好的答案如下 有人提到Jquery验证插件,如果您只想验证url,那么这

通过只使用JavaScript来验证URI在Android上是否有效的可靠方法是什么(不必是正则表达式,是吗?)

也就是说,在Android SDK端,检查不是用Java完成的;它使用JavaScript在网页中完成


编辑:所谓“在Android上工作”,我的意思是,Android可以找到一个使用该URI响应意图的活动。

Javascript从来没有后端那么健壮,但有很多体面的正则表达式

这在这里的另一篇文章中有介绍

我认为最好的答案如下

有人提到Jquery验证插件,如果您只想验证url,那么这似乎有些过分,下面是插件中的正则表达式行:

return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
这就是他们的来源:

一个好的URI正则表达式(它是URL的超集)当然是。不幸的是,它还没有涵盖所有类型的URI。然而,它在Chrome中工作

更简单的版本可在以下网站获得:。 由于多行,我无法将其包含在此处

下面是JUnit测试用例的逐步开发:
“无效的正则表达式:无效的组”这里不起作用,只需尝试调用您的代码:

const url = new URL(urlToCheck)
如果给定的
urlToCheck
或生成的URL不是有效的URL,
则引发异常。。。。。然后你知道

见:


javaScript中的URI验证从来都不是健壮的。这正是我想知道的。我以为我疯了。谢谢如果你不介意的话,我想把你的评论作为答案“验证URI是否有效”是什么意思?你的意思是验证它是否为有效的URI格式?或者你的意思是URI实际上指向一个可访问的网页?前者可以通过检查合法格式的javascript完成。后者需要实际下载网页以查看它是否存在和可用。@jfriend00这是一个很好的问题。我的意思是,安卓有一个活动可以用这个URI响应一个意图。我会更新这个问题。谢谢jQuery验证库包括对URL的支持。但是,并非所有URI都是URL。这是无效的;对
https://df.h.
这不是真的。您可以输入一个非URL函数,它将返回而不出错。
newURL('d:/urlToCheck.com')
doesnthrowuri!=网址。并非所有URI都是URL。