1

この文字列を分割する方法を学ぼうとしています:

var str = 'red','blue','gree'

私はこの作業コードを持っています:

var clean = str.replace(/\'/g, "");
var elements = clean.split(',');

["red","blue","green"]しかし、これは私が欲しい配列を生成します。regex.exec() メソッドを使用してこれを行う方法を学びたいと思います。

ここに私が得たものがあります:

var patt = /([^']+)/g;
var elem= patt.exec(str); 

しかし、これは配列を返します["red","red"]

何か案は?

4

1 に答える 1

2

ではexec、複数の一致を取得するには、ループで実行する必要があります...

var str = "'red','blue','gree'"; // making a guess here

var patt = /([^']+)/g;
var match;

       //   v----yes, an assignment
while(match = patt.exec(str)) {
    console.log(match[1]);
}

デモ: http://jsfiddle.net/D62D4/

グローバル正規表現は、最後の一致の終わりを過ぎたインデックスをそれ自体に格納し、その時点から次のクエリを実行します。

これは一致がなくなるまで続き、その時点でインデックスは に戻され0ます。

プロパティを使用して、正規表現でこのインデックスを観察および変更でき.lastIndexます。

于 2012-06-22T23:52:56.630 に答える