0

html文字列を生成するjavascriptがあり、それを制御できないjavascriptに渡します。ここで、すべての空白が折りたたまれます(尋ねないでください)。

空白を文字に変更し(私はピリオドを使用しています)、スパンを使用してテキストの色を背景と同じに設定することにより、この変換全体で空白を維持したいと思います。このテキストは強調表示できないため、これはかなり正確な空白の代用です

このような変換を可能にする正規表現を開発しようとしています

"a b c"-> `" a ... bc "

<span>.</span> すべてのスペースをこのように置き換えるだけで単純なケースに対処できることはわかっていますが、str.replace(/s/g,"<span class="whitespace">.</span>) スペースごとに個別のスパンタグを設定するのではなく、余分なタグを削除して空白の各グループに一致させることをお勧めします。

任意の提案をいただければ幸いです。

4

3 に答える 3

2

私はこのようにそれを行うことができました:

var str=name.replace(/\s+/g,'<span class="whitespace">$&</span>');
str=str.replace(/\s/g,".");
return str;
于 2013-02-22T18:16:15.707 に答える
0

すべての空白をに変換してみました&nbsp;か?

str.replace(/\s/g,'&nbsp;')
于 2013-02-22T18:00:03.177 に答える
0

これはどうですか:3つのステップ。

  1. 3つ以上のすべての空白に一致します。'inside'スペースを置き換えます。

    /(?<=\s)\s+(?=\s)/./

  2. ピリオドが前に付いていないすべての単一の空白に一致します。

    /(?<!\.)\s/<span>./

  3. スパンとそれに続くドットを一致させます。

    /(<span>\.+)/$1<\/span>/

(私の正規表現-fuは茶色のベルトだけなので、いくつかのエスケープなどを調整する必要があるかもしれません)。

于 2013-02-22T18:11:35.357 に答える