私は大きなJavaScriptの配列、5000程度のエントリがあります。すべての配列項目に対して合理的に実行可能な方法でRegExpの一致を実行するために、私はexecをループしてグループを取り出さない方がよいでしょう。私は、より速くなるようにexecをグループ化しないでマッチングを見つけました。javascriptの正規表現、グループや肯定的なlookbehindなしで一致
- http://jsperf.com/regexp-exec-vs-match-vs-test/4(スピードテスト)はJavaScriptを考える
は、何の正の後読みの操作を持っていない、それは標準の正規表現のツールキットを使用して偽陽性を押すことなく、次の値と一致する数値のみをとることができますか?
// the value to be matched
var reference_field = ',1,3,8,123,';
// a series of reference id to match
var re = /(?:3|8)(?=,)/g;
reference_field.match(re);
// result, note that the second three was not intended --> ["3", "8", "3"]
アレイの長さがそれほど長くない場合は、番号をグループ化するだけです。
// the value to be matched
var reference_field = ',1,3,8,123,';
// a series of reference id to match
var re = /,(3|8)(?=,)/g;
var match;
while(match = re.exec(reference_field)){
if (match == null) {break;}
// do something with match[1]
}
...しかし、私はモバイルがターゲットプラットフォームであるため、スピードに敏感です。私は正規表現トリッキーを欠いているのか、それともグループ化しないとできないのでしょうか?すべてのjavascriptのポジティブな検索ビヘイビアの選択肢は機能しません(カンマで否定的な先読み)、または追加の処理オーバーヘッドを導入します。
実際に!ありがとう。 – pragmar