0

これは、HTML のビットに対して JavaScript で複数回実行されます。or 式のすべてが遅くなりますか? 最適化できますか?

\<[^\>]*?(abbr|acronym|address|applet|area|article|aside|audio|base|basefont|bdi|bdo|big|blockquote|body|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|em|embed|fieldset|figcaption|figure|font|footer|form|frame|frameset|head|header|hr|html|iframe|img|input|ins|kbd|keygen|label|legend|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|optgroup|option|output|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|source|strike|style|sub|summary|sup|textarea|time|title|track|tt|var|video|wbr)[^\>]*?\>/g
4

3 に答える 3

2

このツールを使用して、異なる正規表現を比較できます

Yahoo のフロント ページのソース コードを実行するのに 2.4 秒かかりました。これは科学的なテストではありませんが、あまり効率的ではないようです。

PS Silverlight プラグインが必要です

于 2013-10-07T19:31:50.227 に答える
2

ソース内で非常に頻繁に見つかった要素名( adiv) をリストの先頭に移動してみてください。

… (a|div|abbr| …

また、パターンが一致すると思います< notanabbreviation >。それがあなたが望むものではない場合は、試してください

<\b(a|abbr|…)\b[^>]*?>

\bすべての代替を試行せずにエンジンを早期に終了させることができるため、代替の先行が役立ちます。

ただし、確認するにはテストする必要があります。例として nytimes.com を使用してjsperf テストを作成しました。

試験結果

于 2013-10-07T20:13:50.793 に答える
0

g の後に i を追加すると、大文字と小文字が区別されなくなります

また、javascriptなので、巨大な正規表現の代わりにハッシュを使用できるかもしれません

于 2013-10-07T20:03:12.073 に答える