Javascript - 使用Regex在两个字符之间获取字符

时间:2016-04-20 01:59:14

标签: javascript regex

我有这样的字符串"[Total MM] / [Total-MD] - [Total-MC]"。我想在javascript上使用正则表达式只获取][之间的字符。上面此字符串中的示例仅返回"/""-"

3 个答案:

答案 0 :(得分:2)

试试这个

\]\s*([^[]+?)\s*\[

Regex demo

var re = /\]\s*([^[]+?)\s*\[/g; 
var str = '[Total MM] / [Total-MD] - [Total-MC]';
var m;

while ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}

答案 1 :(得分:1)

有多种方法可以做到这一点,但我认为最直接的是两个正则表达式:一个用于匹配][之间的内容,另一个用于删除括号和空格:

var str = "[Total MM] / [Total-MD] - [Total-MC]";
str
    .match(/\].*?\[/g)
    .map(m => m.replace(/\]\s*|\s*\[/g, ''));

这里是CodePen with a live demo

答案 2 :(得分:1)

创建一个与括号内的IS匹配的正则表达式,但不会捕获它;然后是捕捉其他一切的替代方案。

/\[.*?\]|([^[]*)/g
 ^^^^^^^               MATCH STUFF IN BRACKETS, DO NOT CAPTURE
          ^^^^^^       MATCH ANYTHING ELSE, DO CAPTURE

https://regex101.com/r/oQ8pB2/1。请参阅"匹配信息"在右边。