2009-09-29 28 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