1

book[n]、、および(n は任意の数値)と同様に一致させるためにbook[1,2,3,4,5,...,n]、javascript で次の正規表現を使用しています。book[author="Kristian"]book[id=n]

var opRegex = /\[[0-9]+\]|\[[0-9]+,.*\]|\[[a-zA-Z]+="*.+"*\]/gi;

これを次のように使用できます。

// If there is no match in any of the groups hasOp will be null
hasOp = opRegex.exec('books[0]');

/*
Result: ["[0]", index: 5, input: "books[0]"]
*/

上記のように、値だけでなく [ と ] も取得します。グループを使用することでこれを回避できます。そこで、正規表現を次のように変更しました。

var opRegex = /\[([0-9]+)\]|\[([0-9]+,.*)\]|\[([a-zA-Z]+=".+")\]/gi;

上記と同じように実行すると、結果は次のようになります。

["[0]", "0", undefined, undefined, index: 5, input: "books[0]"]

上記では、配列内のインデックス 1、2、および 3 としてグループを取得しています。この例では、一致は最初のものですが、一致が 2 番目の正規表現グループにある場合、一致はインデックス 2 または配列になります。

最初の正規表現を変更して括弧なしで値を取得することはできますか?それとも、グループ化されたアプローチと while ループを使用して最初に定義された値を取得することはできますか?

私が見逃しているものは他にありますか?貪欲ですか?

さらに情報が必要な場合はお知らせください。喜んで提供させていただきます。

4

1 に答える 1