首页 > 解决方案 > 正则表达式在多个方括号内返回内容

问题描述

我正在使用带有 JavaScript 的 Regex,并希望在以下字符串中返回方括号内的内容(包括括号本身):

var str = '##abde[fgh]ijk[mn]op';
var brackets = str.match(/\[.{1,}\]/g); //["[fgh]ijk[mn]"]

我想brackets返回["[fgh]", "[mn]"],而不是(ijk)括号外的内容。如何解决这个问题?谢谢你。

标签: javascriptregex

解决方案


这里的问题是.匹配任何字符(包括方括号)。

您可以使用如下字符类:

[^\]]

匹配方括号外的任何字符。

所以这应该适合你:

str.match(/\[[^\]]{1,}\]/g);

最好是这样:

str.match(/\[[^\]]+\]/g);

它有点整洁,因为{1,}它在语义上等同于+.


推荐阅读