正则表达式用标签包围空白并替换它

时间:2013-02-22 17:53:58

标签: javascript regex

我有一些生成html字符串的javascript,然后将其传递给一些我无法控制的javascript,其中所有空格都被折叠(请不要问)。

我想通过将空白更改为字符(我一直使用句点)并使用跨度将文本颜色设置为与背景相同来维持我的空白。此文本无法突出显示,因此这是一个相当准确的空白替代

我正在尝试开发一个允许我像这样进行转换的正则表达式

"a b c" - > ` “一... b.c”

我知道我可以通过简单地用<span>.</span>str.replace(/s/g,"<span class="whitespace">.</span>)替换每个空格来处理这个简单的情况但是我真的更愿意删除多余的标签并匹配每组空白而不是为每个空间都有一个单独的span标记。

任何建议都将不胜感激。

3 个答案:

答案 0 :(得分:2)

我能够这样做:

var str=name.replace(/\s+/g,'<span class="whitespace">$&</span>');
str=str.replace(/\s/g,".");
return str;

答案 1 :(得分:0)

您是否尝试将所有空格转换为&nbsp;

str.replace(/\s/g,'&nbsp;')

答案 2 :(得分:0)

这个怎么样:三个步骤。

  1. 匹配3个或更多的所有空格。替换“内部”空格。

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

  2. 匹配所有不以句号开头的单个空格。

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

  3. 匹配范围后跟点。

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

  4. (我的正则表达式只是棕色腰带所以你可能需要调整一些逃脱等等。)