RegEx从方括号内获取文本

时间:2012-06-13 10:37:43

标签: javascript jquery regex

  

可能重复:
  Regular Expression to find a string included between two characters, while EXCLUDING the delimiters

我有一个函数,我必须得到用方括号括起但不包括括号的文本,例如

this is [test] line i [want] text [inside] square [brackets]

从上面一行我想要的话

测试

括号

我正在尝试用 /\[(.*?)\]/g 执行此操作但是我没有得到满意的结果我得到括号内的单词但是括号不是我想要的

我确实在SO上搜索了一些相似类型的问题,但这些解决方案中没有一个能够正常运行,这是(?<=\[)[^]]+(?=\])这在RegEx教程中有效,但不适用于javascript。这是refrence我从哪里得到这个

这是我到目前为止所做的事情demo

请帮助

2 个答案:

答案 0 :(得分:24)

单一前瞻应该在这里诀窍:

 a = "this is [test] line i [want] text [inside] square [brackets]"
 words = a.match(/[^[\]]+(?=])/g)

但在一般情况下,基于execreplace的循环会导致更简单的代码:

words = []
a.replace(/\[(.+?)\]/g, function($0, $1) { words.push($1) })

答案 1 :(得分:5)

This fiddle使用RegExp.exec并仅输出括号内的内容。

var data = "this is [test] line i [want] text [inside] square [brackets]"
var re= /\[(.*?)\]/g;
for(m = re.exec(data); m; m = re.exec(data)){
    alert(m[1])
}