这是一个快速的问题,我只是不知道很多正则表达式的技巧,并且找不到这个问题的文档:
让我说我有字符串:
'I know [foo] and [bar] about Regex'
我想做一个JS Regex模式,它创建每个括号封装的数组。结果:
['[foo]', '[bar]']
我目前有:
str.match(/\[(.*)\]/g);
但是这会回来:
'[foo] and [bar]'
感谢。
答案 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)
请改用:
\\[[^\\]]+\\]
由于(.*)
,您的正则表达式部分错误,这会使您的模式允许[
和]
之间的任何字符,其中包括[
和]