10

可能重复:
正则表达式查找包含在两个字符之间的字符串,同时排除分隔符

我有一个函数,我必须获取包含在方括号中但不是方括号的文本,例如

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

从上面的行我想要的话:

test
want
inside
brackets

我正在尝试这样做,/\[(.*?)\]/g但我没有得到满意的结果,我得到括号内的单词,但括号也不是我想要的

我确实在 SO 上搜索了一些类似类型的问题,但是这些解决方案都没有对我正常工作,这是发现(?<=\[)[^]]+(?=\])这在 RegEx 教练中有效但不适用于 JavaScript 的一个。这是我得到这个的参考

这是我到目前为止所做的:演示

请帮忙。

4

2 回答 2

30

一个前瞻应该在这里解决问题:

 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) })
于 2012-06-13T10:48:46.860 回答
6

这个小提琴使用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])
}
于 2012-06-13T10:41:07.380 回答