0

これは簡単な質問です。私は多くの正規表現のトリックを知らず、この正確な点に関するドキュメントを見つけることができません:

私が文字列を持っているとしましょう:

'I know [foo] and [bar] about Regex'

各ブラケットのカプセル化の配列を作成する JS Regex パターンを実行したいと考えています。結果:

['[foo]', '[bar]']

私は現在持っています:

str.match(/\[(.*)\]/g);

しかし、これは次を返します:

'[foo] and [bar]'

ありがとう。

4

4 に答える 4

3
str.match(/\[(.*?)\]/g);

?修飾子を使用して、*量指定子を非貪欲にします。貪欲でない量指定子は、デフォルトである最長の文字列ではなく、可能な限り短い文字列に一致します。

于 2013-06-14T03:40:37.203 に答える
2

代わりにこれを使用してください:

var str = 'I know [foo] and [bar] about Regex';
str.match(/\[([^\[\]]*)\]/g);

あなたの正規表現は部分的に間違っているため(.*)、パターンはとの間の任意の文字を許可します。[][]

于 2013-06-14T03:40:08.643 に答える
0

試す

var array = 'I know [foo] and [bar] about Regex'.match(/(\[[^\]]+\])/g)
于 2013-06-14T03:39:55.343 に答える