- 首先你想到的是什么呢? loacation.host.indexOf(‘qq.com’)>-1, 有一个问题我们现在是判断一个字符串是否是url, 跟location没什么关系哈,哪怕有关系这个真的对吗。
- 正常的正则是匹配 /^(http:|https:)\/\/([\w-]+.)+qq.com\//.test(url) 看起来是不错哦。
- 你访问http://wq.qq.com@w.url.cn/s/AM6GP68链接,qq.com没毛病吧,可用户来投诉了要支付钱怎样怎样。
- http协议下url的标准格式为: http://username:password@host:port/path?query#hash
实际中我们从来不考虑url中的username和password,也就是@符号以及前面的部分,但是这个却是非常标准的url,不会有任何问题,浏览器碰到这种url也一般将username和password忽略。这个网站很巧妙的利用我们认识的盲区,通过在url部分加上username部分,使通过代码中的正则检查,从而打开目标url。
5.考虑到url中斜杠(/)是关键符号,而一般投放的链接肯定带有斜杠,所以我们只需要在正则检查中加上斜杠即可,即
也就是原先验证目标url是否是http(s)://xxx.qq.com 这种,改成验证http(s)://xxx.qq.com/ 这种,验证正则带上斜杠。( 其中xxx可以是多级子域名)
所以正确的正则式 /^(http:|https:)\/\/([\w-]+.)+qq.com\/\//.test(url)