【问题标题】:Regex pattern returns more matches than expected [duplicate]正则表达式模式返回比预期更多的匹配项[重复]
【发布时间】:2019-01-18 15:16:19
【问题描述】:

javascript 中的以下正则表达式应返回在括号 [] 之间找到的每个单词。

/\[(\w|\d|\s)*\]/

但是,它也会返回与正则表达式不匹配的第二个结果。在正则表达式测试器中,我只得到匹配“[id]”。但是在示例中,它也匹配 'd',这是一个错误的结果。

我似乎不明白为什么。

const title = "Detail boeking [id]"
const titleParameters = title.match(/\[(\w|\d|\s)*\]/);

$.each(titleParameters, function(e, v) {
  $('#test').append("matched value:" + v + "<br>");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test">

</div>

有关此问题的工作示例,另请参见 jsfiddle:https://jsfiddle.net/2vxsjgy6/

【问题讨论】:

  • 它只匹配[id],但由于你也有一个捕获组,它会在match的结果数组中返回2个元素,最好使用/\[[\w\s]*\]/)或参见:@987654322 @
  • 捕获组的意义何在? (
  • 使用/\[[\w\s]*]//\[[^\][]*]/
  • 写一个答案而不是在 cmets 中关闭问题和答案不是更好吗?
  • 恕我直言,在 cmets 中写答案纯属礼貌,没有真正的理由重复回答

标签: javascript regex


【解决方案1】:

将您的正则表达式更改为/\[[\w|\d|\s]*\]/(方括号)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多