我想寫一個正則表達式來抓取任何.gov或.edu網址的整個網址,使其成爲一個鏈接。正則表達式只匹配.gov tlds
我目前有:
/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/
所有()
這樣我就可以吐出它任何URL,但我只想.GOV或.edu的人。
在此先感謝。
我想寫一個正則表達式來抓取任何.gov或.edu網址的整個網址,使其成爲一個鏈接。正則表達式只匹配.gov tlds
我目前有:
/(\b(https?|ftp):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/
所有()
這樣我就可以吐出它任何URL,但我只想.GOV或.edu的人。
在此先感謝。
[-A-Z0-9+&@#\/%?=~_|!:,.;]*
似乎是誹謗大部分的網址,所以我們需要在這裏堵塞.gov和.edu的地方。最快的解決辦法是:
[-A-Z0-9+&@#\/%?=~_|!:,.;]+(\.gov|\.edu)[-A-Z0-9+&@#\/%?=~_|!:,.;]*
然而,這會匹配一個網址:http://www.example.com/evil.gov/test.html
爲了解決這個問題,我們可以拿出它的頂級域名之前匹配/
:
[-A-Z0-9+&@#%?=~_|!:,.;]+(\.gov|\.edu)[-A-Z0-9+&@#\/%?=~_|!:,.;]*
或者,在最後,我們有:
/(\b(https?|ftp):\/\/[-A-Z0-9+&@#%?=~_|!:,.;]+(\.gov|\.edu)[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|]?)/
由於它與example.gov不匹配的問題,我在最後一個標記中添加了一個?
。
該死的是醜陋的。
注 - 許多這些符號在域名中是非法的。刪除它們會使它顯得不那麼難看。 – zigdon 2010-07-29 20:50:59
同意的zigdon。想與他的原始正則表達式一起工作。 – 2010-07-29 21:12:25
雖然它匹配'http:// FOO.edu-BAR.X'。 – user123444555621 2010-07-29 21:12:27