似たようなサービスはすでにいくつもあるのですが、某所の宿題を片付けるため習作として作りました。
- Regexp:
- Options:
- g i m
- String:
JavaScriptのソースはentry末に
特に知りたかったのが、.
の挙動。どうもJavaScriptには、Perlのs
オプション相当がないので、.
は常に「改行以外の全ての文字にマッチする」の意味しか持たせられないようです。.+
と入れてやってみてください。最初の行だけがマッチするはずです。
回避策として、[\S\s]+
というものが使えるようですが....
あと、$
の意味がオプションによって変わってきますが、これまたPerlの\z
相当、すなわち「問答無用で文字列終端にマッチ」するもないようです。
Enjoy!
Dan the JavaScripting Regular Expressionist
See Also:
(function(){ var $ = function(id){ return document.getElementById(id) }; var entities = { '<':'lt', '>':'gt', '&':'amp', '\"':'quot' }; var encode_entities = function(str){ return str.replace(/[<>&\"]/g, function(m0){ return '&' + entities[m0] + ';' ; }); }; var make_regexp = function(){ var pat = $('regexp').value; var opt = ''; if ($('rx_g').checked) opt += 'g'; if ($('rx_i').checked) opt += 'i'; if ($('rx_m').checked) opt += 'm'; try{ return new RegExp(pat, opt); }catch(e){ $('result').innerHTML = e; return; } }; run_regexp = function(){ var re = make_regexp(); if (!re) return; var result = $('string').value.replace(re, "\x02$&\x03"); $('result').innerHTML = encode_entities(result) .replace(/\x02/g, '<span class="rxmatch">') .replace(/\x03/g, '</span>'); } })();
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。