7

什么是仅使用 JavaScript 来验证 URI 在 Android 上工作的可靠方法(不必是正则表达式,是吗?)?

即在Android SDK端的Java中不做检查;它是在使用 JavaScript 的网页中完成的。

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

4

3 回答 3

2

Javascript 从来没有像后端那么健壮,但是周围有很多不错的正则表达式。

此处的另一篇文章尝试使用 JavaScript 验证 URL对此进行了介绍

我认为最好的答案如下

有人提到了 Jquery Validation 插件,如果您只想验证 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);

这是他们从哪里得到的:http ://projects.scottsplayground.com/iri/

于 2012-07-17T18:15:45.110 回答
0

一个好的 URI 正则表达式(它是 URL 的超集)肯定是https://github.com/jhermsmeier/uri.regex。不幸的是,它还没有涵盖所有类型的 URI。但是,它适用于 Chrome。

更简单的版本可在http://jmrware.com/articles/2009/uri_regexp/URI_regex.html获得。由于多行,我无法在此处包含它。

这里是使用 JUnit 测试用例的分步开发:http: //timezra.blogspot.de/2010/05/regex-to-validate-uris.html 这在这里不起作用“无效的正则表达式:无效组"

于 2013-04-02T16:06:10.050 回答
-1

只需尝试调用您的代码:

const url = new URL(urlToCheck)

如果给定urlToCheck或生成的 URL 不是有效的 URL,
则会引发异常.....然后你就知道了......

看:

https://javascript.info/url

https://developer.mozilla.org/en-US/docs/Web/API/URL/URL

于 2020-05-04T13:23:48.363 回答