我正在将Regex与JavaScript结合使用,并希望在以下字符串中返回方括号(包括方括号本身)内的内容:
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,}
语义上讲等效于+
。