10

重複の可能性:
区切り文字を除外しながら、2 つの文字の間に含まれる文字列を検索する正規表現

たとえば、角括弧ではなく角括弧で囲まれたテキストを取得する必要がある関数があります

this is [test] line i [want] text [inside] square [brackets]

上記の行から私は言葉が欲しい:

test
want
inside
brackets

私はこれをしようとしています/\[(.*?)\]/gが、満足のいく結果が得られません。括弧内の単語だけでなく、私が望むものではない括弧も取得します

SOで同様のタイプの質問を検索しましたが、これらのソリューションはどれも適切に機能しません(?<=\[)[^]]+(?=\])。これは、これがRegExコーチでは機能するがJavaScriptでは機能しないことがわかったものです。これは私がこれを入手した場所からの参照です

これが私がこれまでに行ったことです:デモ

助けてください。

4

2 に答える 2

30

ここでは、1 回の先読みでうまくいくはずです。

 a = "this is [test] line i [want] text [inside] square [brackets]"
 words = a.match(/[^[\]]+(?=])/g)

しかし、一般的なケースでは、execまたはreplaceベースのループはより単純なコードにつながります:

words = []
a.replace(/\[(.+?)\]/g, function($0, $1) { words.push($1) })
于 2012-06-13T10:48:46.860 に答える
6

このフィドル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])
}
于 2012-06-13T10:41:07.380 に答える