js-match()方法为什么匹配这个字符串为null

<script type="text/javascript">

var str="https://www.baidu.com/s?ie=utf";
document.write(str.match("www.baidu.com/s?"))  //www.baidu.com/s
document.write(str.match("www.baidu.com/s?ie=utf"))  //null

</script>

为什么匹配到?之后就无法匹配了??

阅读 5.7k
2 个回答
str.match("www.baidu.com/s\\?ie=utf")

你需要转义。正则不建议用字符串构成,建议这么写:

str.match(/www.baidu.com\/s\?ie=utf/)

问号需要转义啊,因为你调用str.match(regexp)这个方法时,如果你传入的是非正则表达式,它会隐式地使用 new RegExp(obj) 将其转换为正则表达式对象。问号?在正则中表示匹配0次或一次,如果你想匹配?,需要\?去转义,否则它会把?当作匹配0次或一次,所以你第二次的时候是输出null,因为它并没有把?当作?,而是当作匹配0次或1次。

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