5

JavaScriptに組み込まれている正規表現ライブラリは後読みをサポートしていないため、純粋にJavaScriptで正規表現エンジンを実装するライブラリがあるのではないかと思いました。

私の場合、パフォーマンスは重要ではありません(短い文字列で単純な式を検索するのに数秒以上かかることがない限り)。

4

1 に答える 1

1

後読みがない場合の一般的な回避策は、関心のあるビットの前にあるものを (アンカーするのではなく) 一致させてから、コールバックに再挿入することです。

fooのすべてのインスタンスをに置き換えますbar。先頭に数字が付きます。

var str = 'foo 1foo foo2';
console.log(str.replace(/(\d)foo/g, function($0, $1) {
    return $1+'bar';
})); //foo 1bar foo1

書いたもの ( docs ; code )を含め、JS には後読みの実装があり、肯定的または否定的な後読みが追加のパラメーターとして渡されます。これを使用すると、上記と同じ結果が得られます。

console.log(str.replace2(/foo/g, 'bar', '(?<=\\d)'));
于 2012-07-28T17:16:34.417 に答える