You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS正则分组匹配调用exec方法返回结果中hello出现两次的原因求解

原因解释

这是JavaScript正则exec()方法的标准返回规则,和你正则里的捕获组设计有关:

  • 返回数组的第0位,永远是整个正则表达式匹配到的完整字符串:你的正则/'([^']*)'/完整匹配的是带单引号的内容'hello',所以数组第0位是"'hello'"
  • 从数组第1位开始,会依次返回正则中每个()包裹的捕获组匹配到的内容:你的正则里写了([^']*)这个捕获组,用来匹配两个单引号中间不带单引号的内容,匹配结果就是hello,所以会作为数组的第二个元素返回。

如果你不需要单独提取单引号内的内容,可以把捕获组改成非捕获组(加?:前缀),就不会返回额外的匹配结果了:

let quotedText = /'(?:[^']*)'/;
console.log(quotedText.exec("she said 'hello'"));
// 输出:["'hello'"]

内容的提问来源于stack exchange,提问作者amissak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:18:01