ネストされたカスタム タグを HTML の同等のものに適切に置き換える方法を探しています。たとえば、次のテキストがあるとします。
This is {b:bold text}
次のようになります。
This is <b>bold text</b>
古い「b」タグの代わりに「太字」クラスのスパンのようなものを使用できること、そしておそらくそうすべきであることは承知していますが、この例の目的のために「b」に固執している理由があります. タグがネストされている可能性があります。
This is {b:bold text and {i:italic}}
これは次のようになります。
This is <b>bold text and <i>italic</i></b>
ただし、次の正規表現があります (replace() 関数で使用します)。
/\{b:([\s\S]*?)\}/gm
/\{i:([\s\S]*?)\}/gm
そして、結果は次のようになります。
This is <b>bold text and <i>italic</b></i>
タグが適切にネストされていません。この場合も、スパンを使用するとこれを解決できますが、「ul」、「li」、「h1」などではうまくいきません。
This is {b:bold text} and {i:italic}
したがって、私の現在の解決策は、最初にすべてをスパンに置き換え、データタグ属性を使用して実際に何をすべきかを示し、次にjQueryを使用してすべてのスパンノードを見つけて適切なタグに置き換えることです:
{h:This is a header}
becomes
<span data-tag='h1'>This is a header</span>
becomes
<h1>This is a header</h1>
それはうまく機能しますが、これを行うより簡単な方法があるかどうか疑問に思っています。中間の方法は、少しガムテープのソリューションのように感じ、「美化」したいと考えています。
助言がありますか?