首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript获取所有具有方括号的字符串[]

Javascript获取所有具有方括号的字符串[]
EN

Stack Overflow用户
提问于 2014-11-18 03:20:39
回答 4查看 1.9K关注 0票数 1

下面有字符串数据:

代码语言:javascript
复制
var data = "somestring[a=0]what[b-c=twelve]----[def=one-2]test"

我需要获得包含方括号[]的所有字符串。这就是我想要的结果。

代码语言:javascript
复制
["[a=0]", "[b-c=twelve]", "[def=one-2]"]

我尝试使用regex /\[(.*?)\]/,但是我得到的只是第一个数组元素是正确的,接下来的元素基本上是相同的值,但是没有方括号。

代码语言:javascript
复制
data.match(/\[(.*?)\]/);
// result => ["[a=0]", "a=0"]

我应该使用什么regexp来实现我想要的结果?提前谢谢你。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-11-18 03:22:33

您希望使用g (全局)修饰符查找所有匹配项。由于括号包含在匹配结果中,所以不需要使用捕获组,而我使用否定来消除回溯量。

代码语言:javascript
复制
someVar.match(/\[[^\]]*]/g);
票数 6
EN

Stack Overflow用户

发布于 2014-11-18 03:33:48

  1. /\[(.*?)\]/中,*?的意思是懒惰,匹配尽可能少的内容。
  2. 你真正想要的是内容上的所有匹配。尝试修饰符g
  3. 试试这个,http://regex101.com/r/aD6cM8/1。任何匹配都以[开头,以]结尾,但不允许[]介于两者之间。

someVar.match(/\[([^\[\]]*)\]/g)

票数 1
EN

Stack Overflow用户

发布于 2014-11-18 03:24:03

您应该将g开关添加到正则表达式中:

代码语言:javascript
复制
someVar.match(/\[(.*?)\]/); // result => ["[a=0]", "a=0"]

结果:

代码语言:javascript
复制
[ "[a=0]", "[b-c=twelve]", "[def=one-2]" ]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26986026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档