什么是仅使用 JavaScript 来验证 URI 在 Android 上工作的可靠方法(不必是正则表达式,是吗?)?
即在Android SDK端的Java中不做检查;它是在使用 JavaScript 的网页中完成的。
编辑:通过“在 Android 上工作”,我的意思是 Android 可以找到一个使用该 URI 响应 Intent 的活动。
什么是仅使用 JavaScript 来验证 URI 在 Android 上工作的可靠方法(不必是正则表达式,是吗?)?
即在Android SDK端的Java中不做检查;它是在使用 JavaScript 的网页中完成的。
编辑:通过“在 Android 上工作”,我的意思是 Android 可以找到一个使用该 URI 响应 Intent 的活动。
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/
一个好的 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 这在这里不起作用“无效的正则表达式:无效组"
只需尝试调用您的代码:
const url = new URL(urlToCheck)
如果给定urlToCheck
或生成的 URL 不是有效的 URL,
则会引发异常.....然后你就知道了......
看: