我有一些字符串,值类似于jquery选择器。
var someVar = "somestring[a=0]what[b-c=twelve]----[def=one-2]test";
我需要获取包含方括号[]
的所有字符串,作为数组
["[a=0]", "[b-c=twelve]", "[def=one-2]"];
我已尝试使用此正则表达式/\[(.*?)\]/
但仅返回第一个数组。并且它也返回与第一个相同的值,但没有方括号。我需要一个带方括号的那个。
someVar.match(/\[(.*?)\]/); // result => ["[a=0]", "a=0"]
实现这一目标的正则表达式是什么?感谢
答案 0 :(得分:5)
您想使用g
(全局)修饰符来查找所有匹配项。由于括号包含在匹配结果中,因此您不需要使用捕获组,而是使用否定来消除回溯量。
someVar.match(/\[[^\]]*]/g);
答案 1 :(得分:1)
/\[(.*?)\]/
中,*?
表示懒惰,匹配尽可能少的内容。 g
[
开头,以]
结尾,但不允许[
或]
介于其中。 someVar.match(/\[([^\[\]]*)\]/g)
答案 2 :(得分:0)
您应该将g
开关添加到正则表达式:
someVar.match(/\[(.*?)\]/); // result => ["[a=0]", "a=0"]
结果
[ "[a=0]", "[b-c=twelve]", "[def=one-2]" ]
答案 3 :(得分:0)
你的正则表达式是正确的,只是后缀g
才能使它成为全局:
someVar.match(/\[(.*?)\]/g);
以下是其中的更多信息:http://www.w3schools.com/jsref/jsref_regexp_g.asp