我想写一个正则表达式来抓取任何.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