2012-06-13 79 views
8

可能重复:
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,但没有这些解决方案的工作正常进行我在这里是一个发现(?<=\[)[^]]+(?=\])这在正则表达式教练,但不与JavaScript。这里是refrence从那里我得到这个

这是我做过到目前为止demo

请帮助

+0

它不是完全重复在不正常的字符方括号它必须处理不同那么其他字符 – sohaan

回答

22

单前瞻应该在这里做的伎俩:

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) }) 
+0

能前瞻正则表达式不能简化?/[^ \ [\]] +(= \])/克 – Jules

+0

@Jules:好建议,谢谢。 – georg

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]) 
} 
+0

先生可以请你给我解释一下什么是循环和发生在我们能使用underscore.js的_each()函数来遍历 – sohaan