下面有字符串数据:
var data = "somestring[a=0]what[b-c=twelve]----[def=one-2]test"我需要获得包含方括号[]的所有字符串。这就是我想要的结果。
["[a=0]", "[b-c=twelve]", "[def=one-2]"]我尝试使用regex /\[(.*?)\]/,但是我得到的只是第一个数组元素是正确的,接下来的元素基本上是相同的值,但是没有方括号。
data.match(/\[(.*?)\]/);
// result => ["[a=0]", "a=0"]我应该使用什么regexp来实现我想要的结果?提前谢谢你。
发布于 2014-11-18 03:22:33
您希望使用g (全局)修饰符查找所有匹配项。由于括号包含在匹配结果中,所以不需要使用捕获组,而我使用否定来消除回溯量。
someVar.match(/\[[^\]]*]/g);发布于 2014-11-18 03:33:48
/\[(.*?)\]/中,*?的意思是懒惰,匹配尽可能少的内容。g[开头,以]结尾,但不允许[或]介于两者之间。someVar.match(/\[([^\[\]]*)\]/g)
发布于 2014-11-18 03:24:03
您应该将g开关添加到正则表达式中:
someVar.match(/\[(.*?)\]/); // result => ["[a=0]", "a=0"]结果:
[ "[a=0]", "[b-c=twelve]", "[def=one-2]" ]https://stackoverflow.com/questions/26986026
复制相似问题