js正则判断文本中是否存在除taobao域名外的其他网址

希望有下边的效果:

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-_%&\?\/.=]+
阅读 6.6k
3 个回答

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题