blog icon indicating copy to clipboard operation
blog copied to clipboard

一道腾讯手写题,如何判断 url 中只包含 qq.com

Open sisterAn opened this issue 3 years ago • 2 comments

例如:

http://www.qq.com  // 通过

http://www.qq.com.cn  // 不通过

http://www.qq.com/a/b  // 通过

http://www.qq.com?a=1  // 通过

http://www.123qq.com?a=1  // 不通过

解答:正则

function check(url){
  if(/\/\/w+\.qq\.com[^.]*$/.test(url)){
    return true;
  }else{
    return false;
  }

}
check('http://www.qq.com')
// true

check('http://www.qq.com.cn')
// false

check('http://www.qq.com/a/b')
// true

check('http://www.qq.com?a=1')
// true

check('http://www.123qq.com?a=1')
// false

这个正则很简单,包含 .qq.com 就可以,但是有一种情况,如果域名不是包含 qq.com 而仅仅是参数后面包含了 qq.com 怎么办?例如 http://www.baidu.com?redirect=http://www.qq.com/a

check('http://www.baidu.com?redirect=http://www.qq.com/a')
// true

如何排除这种情况?

function check(url){
  if(/^https?:\/\/w+\.qq\.com[^.]*$/.test(url)){
    return true;
  }else{
    return false;
  }

}
check('http://www.qq.com')
// true

check('http://www.qq.com.cn')
// false

check('http://www.qq.com/a/b')
// true

check('http://www.qq.com?a=1')
// true

check('http://www.123qq.com?a=1')
// false

check('http://www.baidu.com?redirect=http://www.qq.com/a')
// true

若有收获,就点个赞吧

sisterAn avatar Apr 19 '21 23:04 sisterAn

最后一个结果是false啊~

nooldey avatar Apr 23 '22 08:04 nooldey

function check (url) { let reg = /^https?://\w+.qq.com[^.]*$/ return reg.test(url) }

RyanMeg123 avatar Apr 24 '22 08:04 RyanMeg123