2009-09-29 12 views
21

角括弧内の文字列を文字列で返す必要があります。私は、次の正規表現を持っているが、これはまた、角括弧を返します。Javascript - 角括弧で囲んだ文字列を返す

Some text with [some important info] 

私は「いくつかの重要なを含むようにマッチしたい:

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

文字列は今まで角括弧の1セット、例えばが含まれています私が現在入手している[いくつかの重要な情報]ではなく、「情報」です。

答えて

58

使用のグループ化、これを試してみてください。私は?を追加して、一致する "ungreedy"を作成します。これはおそらくあなたが望むものです。

​​
2

あなたは括弧をキャプチャしようとしました:

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

これはあなたがすることはできません返される配列

0

で捕獲一致として括弧内のパターンを返す必要があります。 Javascriptは見た目のヒントをサポートしていません。

キャプチャグループを使用するか、かっこを切り捨てる必要があります。

ところで、あなたはおそらく貪欲.*を正規表現に入れたくないでしょう。

"\\[.*?]" 

以上、この:

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

JavaScriptはキャプチャをサポートしていないため、ハックする必要があります。反対のアプローチをとるこの代替案を検討してください。むしろ括弧の中にあるものを取り込み、それらの外側にあるものを取り除きます。一組のブラケットだけが存在するので、うまくいくはずです。私は通常、先頭と末尾の空白を取り除くためにこのテクニックを使用します。

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

最後に、新しい行がある場合は最後に追加します。 –

関連する問題