希望有下边的效果:
var urlreg = ?;
urlreg.test("阿斯蒂芬 http://www.baidu.com asdf") //true
urlreg.test("阿斯蒂芬 http://www.taobao.com asdf") //false
我现在的正则是,没有处理淘宝域名的情况:
http:\/\/([A-Za-z0-9-_]+)\.[A-Za-z0-9-_%&\?\/.=]+
这个可以使用正则表达式的差集操作实现,nark正则引擎是第一个实现了交集、差集操作的正则引擎
URL的语法是一个2类文法(上下文无关文法),不是一个3类文法(正则文法),你必须完整的把URL parse出来才行,光用正则表达式是不够的,比如下面几个例子:http://www.taobao.com@www.baidu.com
http://www.t%61obao.com
猜猜看它们都指向哪儿?
先用正则匹配完了疑似url之后,塞到一个空<a>
标签中,然后取它的hostname属性就可以判断是不是淘宝了。
具体请看这个fiddle
http://jsfiddle.net/Gerhut/tBN9X/
IE7和8可以正常解析没有用户名和密码的URL