0
私はJavaScriptのテンプレートパーサーを作成していますが、私は最終的な解決策に近づいていますが、テンプレートのバインディングブロック(正規表現と一致しています) 。JavaScript正規表現 - すべて一致するものを除く
今私は、次のしている:
var codeblock = new RegExp("%\{[\S)]+\}%", 'g');
などに見えるテンプレートライン与えられた:
<td align="right" style="width: 123px;">%{toFixedEx(#{extendedPrice()}#,2,2)}%</td>
は一致します:
%{toFixedEx(#{extendedPrice()}#,2,2)}%
を私は空白を許可したいが%{
と}%
の間に改行があるので、私は以下のregを試しましたEXP:マッチング終わる
var codeblock = new RegExp("%\{[\S\s)]+\}%", 'g');
:
試合は}%
の代わりに、継続的に終了
%{
if (condition) {
toFixedEx(#{surcharge()}#,2 ,4)
}
else {
toFixedEx(0,2,4)
}
}%
:私が行うことができるようにしたいどのような
%{toFixedEx(#{surcharge()}#,2 ,4)}%</td>
<td align="right" style="width: 123px;">%{toFixedEx(#{extendedPrice()}#,2,2)}%
のような試合なものですテンプレート内の最後の閉じ括弧に移動します。私は擬似文字クラスを試しましたが、JavaScriptで動作するようには見えません。
ありがとう、私が探していたものをありがとう。 – dmck
別の注釈(将来の読者に):多くのプログラマーは '.'を使用して、可能な限り一致することを期待しています。 '.'は改行とは一致しません。すべてをマッチさせるには、 '' \\\\\\\\\\\\\\ '' 'を使用する必要があります。これは、空白文字以外の文字*または*すべての空白文字を意味します。 –