2018/03/05

javascript の正規表現で置換文字列を演算

DBに和暦を記入する年寄りがいるので、ツールチップ内だけ西暦表示させるのに、javascript の replace 正規表現で、置換文字列を演算

function HeiseiToSeireki(s){     function HeiseiToSeirekiSub(match, gengou/* $1 */, wareki/* $2 */, offset, string){         return (Number(wareki) + 1988);     }     return s.replace(/(H|平成)([0-9]+)/gi, HeiseiToSeirekiSub); }
javascript は replace 関数の第2引き数に関数を指定できる
(上記は別に宣言しているが無名関数でもおそらく可能)

関数に渡される引き数は、正規表現の内容により ($0, $1, $2... offset, string) と可変する
上の場合
(H または 平成) => $1 => gengou
([0-9]+) => $2 => wareki
という事になり、戻り値で置換される

同様に S|昭和 にもマッチングさせ、gengou で分岐させれば他の元号にも対応可
※上の関数は元年を考慮してません

0 件のコメント: