Javascript 正则表达式匹配-括号内的内容

Javascript 正则表达式匹配-括号内的内容,javascript,regex,Javascript,Regex,这是一个快速的问题,我只是不知道很多正则表达式技巧,也找不到关于这一点的文档: 假设我有字符串: 'I know [foo] and [bar] about Regex' 我想做一个JS正则表达式模式,它生成每个括号封装的数组。结果: ['[foo]', '[bar]'] 我目前有: str.match(/\[(.*)\]/g); 但这也带来了: '[foo] and [bar]' 谢谢。试试看 var array = 'I know [foo] and [bar] about Rege

这是一个快速的问题,我只是不知道很多正则表达式技巧,也找不到关于这一点的文档:

假设我有字符串:

'I know [foo] and [bar] about Regex'
我想做一个JS正则表达式模式,它生成每个括号封装的数组。结果:

['[foo]', '[bar]']
我目前有:

str.match(/\[(.*)\]/g);
但这也带来了:

'[foo] and [bar]'
谢谢。

试试看

var array = 'I know [foo] and [bar] about Regex'.match(/(\[[^\]]+\])/g)
试一试

改用这个:

var str = 'I know [foo] and [bar] about Regex';
str.match(/\[([^\[\]]*)\]/g);
您的正则表达式部分错误,因为
(.*)
,这使得您的模式允许介于
[
]
之间的任何字符,其中包括
[
]

,请改用此选项:

var str = 'I know [foo] and [bar] about Regex';
str.match(/\[([^\[\]]*)\]/g);
str.match(/\[(.*?)\]/g);
您的正则表达式部分错误,因为
(.*)
,这使得您的模式允许介于
[
]
之间的任何字符,其中包括
[
]

str.match(/\[(.*?)\]/g);
使用
修饰符使
*
量词不贪婪。非贪婪量词将匹配可能的最短字符串,而不是默认的最长字符串

使用
修饰符使
*
量词不贪婪。非贪婪量词将匹配最短的字符串,而不是最长的字符串,这是默认值。

请改用这个:

\\[[^\\]]+\\]
您的正则表达式部分错误,因为
(.*)
,这使得您的模式允许
[
]
之间的任何字符,其中包括
[
]

,请改用此选项:

str.match(/\[(.*?)\]/g);
\\[[^\\]]+\\]
您的正则表达式部分错误,因为
(.*)
,这使得您的模式允许
[
]
之间的任何字符,其中包括
[
]

这看起来非常像一年前的答案。这看起来非常像一年前的答案。
str.match(/\[(.*?)\]/g);