RegEx参考char被替换

时间:2011-12-03 16:35:32

标签: javascript regex

我使用正则表达式替换"^"" "以外的所有字符,如下所示:

var s = string.replace(/[^\^ ]/g,"X");

它有效,但正如您所看到的,它正在用X替换所有未列入黑名单的字符。这是暂时的。我希望能够用标签包装而不是替换所有未列入黑名单的字符。

例如,假设字符串是'foo',我想使用正则表达式导致:

<span>f</span><span>o</span><span>o</span>

这是可能的,还是我必须手动遍历字符串并自己进行包装?

3 个答案:

答案 0 :(得分:5)

您可以替换为

<span>$&</span>

$&包含整个匹配的值,因此会使用span标记围绕每个不需要的字符:

>> 'foo'.replace(/[^\^ ]/g, '<span>$&</span>') 
"<span>f</span><span>o</span><span>o</span>"

如果您想要包围整个不需要的字符序列,您还可以在正则表达式中的字符类之后添加+

>> 'foo'.replace(/[^\^ ]+/g, '<span>$&</span>') 
"<span>foo</span>" 

答案 1 :(得分:4)

您可以使用分组,然后可以使用$n引用,n代表组号。您可以使用()进行分组。此外,^不需要在字符类中进行转义。

在这种情况下,您只需要一个组,所以:

"foo ^ bar".replace(/([^^ ])/g, "<span>$1</span>");
// "<span>f</span><span>o</span><span>o</span> ^ <span>b</span><span>a</span><span>r</span>"

答案 2 :(得分:2)

var s = string.replace(/([^\^ ])/g,"<span>$1</span>");