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

时间:2013-06-14 03:38:13

标签: javascript regex

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

让我说我有字符串:

'I know [foo] and [bar] about Regex'

我想做一个JS Regex模式,它创建每个括号封装的数组。结果:

['[foo]', '[bar]']

我目前有:

str.match(/\[(.*)\]/g);

但是这会回来:

'[foo] and [bar]'

感谢。

4 个答案:

答案 0 :(得分:3)

str.match(/\[(.*?)\]/g);

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

答案 1 :(得分:2)

请改用:

var str = 'I know [foo] and [bar] about Regex';
str.match(/\[([^\[\]]*)\]/g);

由于(.*),您的正则表达式部分错误,这使您的模式允许[]之间的任何字符,其中包括[ }和]

答案 2 :(得分:0)

尝试

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

答案 3 :(得分:0)

请改用:

\\[[^\\]]+\\]

由于(.*),您的正则表达式部分错误,这会使您的模式允许[]之间的任何字符,其中包括[]