2012-07-17 34 views
4

什麼是健壯的方式(不必是正則表達式,是嗎?)驗證一個URI在Android上僅使用JavaScript工作?JavaScript中的URI驗證

也就是說,檢查是不是在Java中對Android SDK端完成;它在使用JavaScript的網頁中完成。

編輯:由「Android上的作品」,我指的是Android的可以發現,使用URI響應的意圖的活動。

+2

URI驗證是從來沒有強勁。 – jbabey 2012-07-17 18:05:06

+0

這正是我想知道的。我以爲我只是瘋了。謝謝! – 2012-07-17 18:14:22

+0

如果您不介意,我想將您的評論標記爲答案。 ;) – 2012-07-17 18:14:48

回答

0

JavaScript是從來沒有一樣強大後臺,但有很多關像樣的正則表達式的周圍。

這是覆蓋在這裏另一篇文章Trying to Validate URL Using 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); 

這裏是他們從得到它:http://projects.scottsplayground.com/iri/

+1

jQuery驗證庫包含對URL的支持http://docs.jquery.com/Plugins/Validation/Methods/url。但是,並非所有的URI都是URL。 – koppor 2013-04-02 15:59:37

+0

Koppor是絕對正確的。試試這個例如僅限「#foo」... – sebilasse 2014-08-26 11:55:00

0

一咕d正則表達式的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 這並不在這裏工作「無效的正則表達式:無效的團」在JavaScript