【发布时间】: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