只有使用JavaScript才能验证URI是否适用于Android,这是一种强大的方式(不一定是正则表达式,是吗?)?
也就是说,在Android SDK端没有用Java完成检查;它是在使用JavaScript的网页上完成的。
编辑:通过“适用于Android”,我的意思是Android可以找到一个使用该URI响应Intent的Activity。
答案 0 :(得分:1)
只需尝试调用您的代码:
const url = new URL(urlToCheck)
如果给定的urlToCheck
或生成的URL不是有效的URL,则
则引发异常.....然后您知道...
请参阅:
答案 1 :(得分:0)
Javascript从来没有像后端那样强大,但是有很多正常的正则表达式。
此处的另一篇文章Trying to Validate URL Using JavaScript
对此进行了介绍我认为最好的答案是
有人提到了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);
获取的地方
答案 2 :(得分: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 这在这里不起作用“无效的正则表达式:无效的组”