正则表达式的非贪婪模式

"hellohelloworld".match(/(hello){1,2}?/);

clipboard.png
我在{1,2}后面加上?应该开启费贪婪模式了吧,但是为什么输出结果还是匹配了两次hello

阅读 2.4k
3 个回答

第一个是全局匹配第二个是括号匹配
其实你的写法是对的 match方法返回的数组除了第一位之后都是匹配括号内的结果
console.log("hellohelloworld".match(/(hello){1,2}?/))//[ "hello", "hello" ]
console.log("hellohelloworld".match(/(hello){1,2}/))//[ "hellohello", "hello" ]

如果你只要匹配一次,那你"hellohelloworld".match(/hello/)就好啦

{n,m}?

匹配n到m次,尽可能少的匹配

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