javascript - 正则表达式在多个方括号内返回内容
问题描述
我正在使用带有 JavaScript 的 Regex,并希望在以下字符串中返回方括号内的内容(包括括号本身):
var str = '##abde[fgh]ijk[mn]op';
var brackets = str.match(/\[.{1,}\]/g); //["[fgh]ijk[mn]"]
我想brackets
返回["[fgh]", "[mn]"]
,而不是(ijk)
括号外的内容。如何解决这个问题?谢谢你。
解决方案
这里的问题是.
匹配任何字符(包括方括号)。
您可以使用如下字符类:
[^\]]
匹配除方括号外的任何字符。
所以这应该适合你:
str.match(/\[[^\]]{1,}\]/g);
最好是这样:
str.match(/\[[^\]]+\]/g);
它有点整洁,因为{1,}
它在语义上等同于+
.