全ての空白を はかなり余計なお世話

問答無用
1 v1 = v1.replace(/ /g, ' ');

先頭の連続空白、だけにしたいかなぁ。

pythonで言うところの:

1 import re
2 RGX = re.compile("^( +)", flags=re.MULTILINE)
3 print(
4     RGX.sub(
5         lambda m: " " * len(m.group(1)),
6         """\
7 jQuery(function($) {
8     function do_escape() {
9 })"""))

これをしたいわけだわね。

ちょと苦しいぞ:

1 v1 = v1.replace(/^( +)/gm, function (wh, g1) {
2         return new Array(g1.length + 1).join(' ');
3     }
4 );

文字列のメソッドとして、なのは java 的なのか。function 引数は matcher オブジェクトで来る Python の方がイケてはいる。new Array 部分は、Python での「",".join(['', '', ''])」みたいなコードで脳内変換してみれば「+ 1」の意味はわかる…のだけど、最初加算しなければならないことに気付かなかった。

にしても javascript は仕様調べるのツラい。どこまでが javascript で、ecmascript ではどうで、prototype.js は忘れたくて、jQuery がどこまでやってくれていて、それぞれのバージョンによってどう違くて、ブラウザの対応状況はどうで…。つまりは jQuery さまさま、ってことなのだろうなぁ…。(とはいえ正規表現については多分 jQuery は何もしていないんだろう。)

でわけで、online HTML escape editor新版。