2009-09-29 25 views
21

我只需要返回字符串中方括号内包含的文本。我有以下的正则表达式,但这也返回方括号:Javascript - 在方括号之间返回字符串

var matched = mystring.match("\\[.*]"); 

一个字符串,将只包含一个组方括号,例如:

Some text with [some important info] 

我想匹配包含“一些重要信息',而不是我目前得到的'[一些重要信息']。

回答

58

使用分组。我已经添加了一个?来使匹配的“不真实”,因为这可能是你想要的。

​​
2

你尝试捕获的括号:

("\\[(.*)]"); 

这应该括号内为捕捉比赛返回数组

0

你不能在返回模式。 Javascript不支持lookbehinds。

您必须使用捕获组或删除括号。

顺便说一下,你可能不想在你的正则表达式中使用贪婪.*。试试这个:

"\\[.*?]" 

或者更好的做法是:

"\\[[^\\]]*]" 
9

由于javascript不支持捕获,因此您必须对其进行破解。考虑采取相反方法的这种替代方案。而是捕捉括号内的内容,删除它们之外的内容。既然只有一组括号,它应该可以正常工作。我通常使用这种技术来剥离前导空白和尾随空白。

mystring.replace(/(^.*\[|\].*$)/g, ''); 
+0

如果在它后面有一个新行,最后加上)。 – 2017-07-19 11:23:55