https://nseg.connpass.com/event/251366/ での発表資料です。

最初に, 皆さんにブラウザーのコンソールで/.*/()を試していただきたい. そして, 他のタブとか色々試して欲しい. どんな文字が返ってきましたか? 多分一意じゃないはず. バラバラ. ワケが分からないよ. そこで, このエントリーを思い出した. (前にも見たことあった...) typeof演算子から学ぶJavaScriptのデータ型の概念と関係する考察のまとめ(id:sandai) 「というわけでデフォルトでexecメソッドが呼び出されるようになっています。」 そうなのか...execなのか. ECMA-262のどこに書いてるのかは分からないけど(←あ...) まあいいや. /.*/.exec()ってなることは分かった. ....function is not a functionの解説はこのエントリーに任せるとして... .execに引数がない場合どうなるのか? 挙動から見てみて明ら
追記:動いていなかった。下のコードは修正済み。 RegExp.parse=function(str){ var [,pattern,flags]=str.split(/^\/|\/(?=[igmy]*$)/); return new RegExp(pattern,flags); } var re=RegExp.parse('/foo\/bar\\\\baz[^/]/ig'); 'foo/Bar\\baz-foo/Bar\\baz-'.match(re);//["foo/Bar\baz-", "foo/Bar\baz-"] 普通にevalする方法だと、正規表現以外も実行されちゃうから駄目。
単純な特定文字列の存在確認をするのに indexOf と正規表現でどれくらい差があるのかなと思って、次のようなコードを書きました。 (function(){ var a = [], n = 10000; for (var i = 0; i < n; i++) { a.push('item:' + i); } var str = a.join('\n'); var s = new Date(); for (var i = 0; i < 3000; i++) { //var m = str.indexOf('item:9999'); // (1) indexOf //var m = /item:9999/.exec(str); // (2) 静的な正規表現 //var m = new RegExp('item:9999').exec(str); // (3) 動的生成の正規表現 //var m
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く