2016-05-12 7 views
0

私は10x^2-8y^2-7k^4=0のようなテキスト式を使用しています。 ^を見つけるには、正規表現を使用して文字列全体を<sup>2</sup>に置き換えます。結果は以下のようにする必要があります:正規表現を使用して単語を検索し、htmlタグで置き換えます。

enter image description here

私はstr = str.replace(/\^\s/g, "<sup>$1</sup> ")を試してみましたが、私は期待した結果が届きません。

私の問題を解決するのに役立つアイディアですか?

+0

'.replace(/ \ ^(\ d +)/ g、 '$ 1')'を試してください。特定の方法でこれらの値の周りの空白も管理する必要がありますか? –

+0

いいえ、それは十分です。私はあなたの助けに感謝しました。 – prasanth

+0

私はこのような同じ単一の正規表現でデュアルタグ関数を適用することができます: - ''^"は$ 1'と ''⌄ "を 1 $ 'に置き換えます。どのように私はコードを変更することができます教えてください? – prasanth

答えて

2

私はあなたが

\^(\d+) 

ような何かを探しているそれは、^と一致すると考え、指数をキャプチャし、

<sup>$1</sup> 

See it here at regex101と交換してください。

編集:

this fiddleを確認し、新しい需要を満たすために。これは、replaceで関数を使用してsubも処理します。

+0

正解ありがとうございます。 – prasanth

+0

ようこそ。それを合格とマークしてください。 – ClasG

+0

たくさんの.clearとシンプルなコードをありがとう。そして私の期待も満たした。 – prasanth

1

あなたの現在のパターンは、スペース文字(スペース、タブ、改行など)に続くキャレットと一致しますが、キャレットに続いて1文字または複数の文字を賞賛に包んだ文字列TeXにあります。

/\^(?:([\w\d])|\{([\w\d]{2,})\})/g 

さて、str = str.replace(/\^(?:([\w\d])|\{([\w\d]{2,})\})/g, "<sup>$1</sup>");を使用して仕事をする必要があります。


あなたは、特定のタグが付けられた特定の文字で始まる文字をラップすることができ、この表現から、より汎用的な機能を行うことができます。例えば

function wrapPrefixed(string, prefix, tagName) { 
    return string.replace(new RegExp("\\" + prefix + "(?:([\\w\\d])|\\{([\\w\\d]{2,})\\})"), "<" + tagname + ">$1</" + tagname + ">"); 
} 

1<sub>2</sub> + 4<sub>3+2</sub>wrapPrefixed("1_2 + 4_{3+2}", "_", "sub");結果を呼び出します。

+0

マイケルに感謝します。私がこのような同じ単一のregexpでデュアルタグ関数を適用することができる場合: - ""^"$ 1'と ''⌄ "を 1 $ 'に置き換えます。どのように私はコードを変更することができます教えてください? – prasanth

+0

うーん...中括弧部分は何ですか?どのように必要ですか? – ClasG

+0

いいえ、必要ありません。お手伝いできますか? – prasanth

関連する問題