我正在使用這個正則表達式(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\;\?\'\\\+&%\$#\=~_\-]+))*
來搜索網址,唯一的問題是,它發現「你可以」是一個網址,我該如何改變它,因此那裏有一段時間才結束(在這種情況下'ca')所以'你ca'將不再工作,但'you.ca'將url正則表達式問題
回答
你忘了逃避(www。| [a-zA-Z]。)塊中的句點。
這與''.''塊之前有什麼關係?(com | edu ...'block? – 2010-08-10 23:08:40
我對正則表達式不太瞭解,我怎麼會逃避它們? – 2010-08-10 23:20:26
在 – zigdon 2010-08-13 00:04:35
用正則表達式解析uris是個難題。
要麼使用類似Regexp::Common::URI的庫,要麼準備花費大量時間來研究一堆RFC。解析URIs完全不是微不足道的,並且存在很多細微的錯誤。
您可以對句點字符使用量詞,因此'\。{1}'在接下來的任何操作之前都需要一個句點。
這不是調試這個問題的必要部分,但它可能有助於瞭解它。它更加明確,'{1}'比點更大,所以它也可以用作長而醜的正則表達式的分隔符,在調試過程中,您可能會不小心在點的旁邊拋出「+」或「*」 。
與'\。'有什麼不同? – zigdon 2010-08-13 00:03:53
+1是爲了發現不是一個,而是兩個用於'{1}'。:儘管如此,DI依然看不到我自己的使用;它增加了混亂在我看來,正則表達式會消除它帶來的任何好處。 – 2010-08-16 13:08:33
我使用免費軟件來檢查我的正則表達式: http://www.weitz.de/regex-coach/
也許它可以是有益的給你
約翰格魯伯的正則表達式是我在尋找網址的經驗,到目前爲止最好的。在他的博客上看到他的文章:An Improved Liberal, Accurate Regex Pattern for Matching URLs。它在很多生產代碼中都在使用。有兩個版本:一個匹配任何URL,而另一個只匹配http/https URL。
- 1. 正則表達式的URL問題
- 2. URL重寫問題,正則表達式
- 3. Django的URL正則表達式問題
- 4. 正則表達式問題
- 5. 正則表達式問題
- 6. 正則表達式問題
- 7. 正則表達式問題
- 8. 正則表達式問題
- 9. 正則表達式問題
- 10. 正則表達式問題
- 11. 正則表達式「|」問題
- 12. 正則表達式問題
- 13. 正則表達式表達問題
- 14. 正則表達式:簡單的Java正則表達式問題
- 15. javascript正則表達式規則問題
- 16. Firebase規則正則表達式問題
- 17. Grep正則表達式 - 模式問題
- 18. 正則表達式模式的問題
- 19. 正則表達式:從URL
- 20. 正則表達式:在URL
- 21. 正則表達式:從URL
- 22. URL的正則表達式
- 23. URL的正則表達式
- 24. 正則表達式的URL
- 25. 正則表達式:從URL
- 26. 正則表達式從URL
- 27. javascript url正則表達式
- 28. PHP + JAVASCRIPT GET正則表達式的URL正則表達式
- 29. 正則表達式的URL的正則表達式
- 30. 簡單的正則表達式問題
我可以看到你已經轉義。在你的正則表達式中,嘗試逃避它們並檢查它是否有效。 – 2010-08-10 23:02:05
如果您告訴我們您的目標語言,可能有一個我們可以向您建議的庫,而不是試圖在正則表達式中編寫複雜的解析器 – 2010-08-10 23:18:56
我們能否**請停止嘗試通過檢查其TLD來「驗證」URL已知值?每當ICANN批准新的TLD時,您是否真的需要更新您的表述?你真的認爲這就是目前存在的所有頂級域名? (提示:沒有) – bobince 2010-08-10 23:30:37