我使用正则表达式替换"^"
和" "
以外的所有字符,如下所示:
var s = string.replace(/[^\^ ]/g,"X");
它有效,但正如您所看到的,它正在用X
替换所有未列入黑名单的字符。这是暂时的。我希望能够用标签包装而不是替换所有未列入黑名单的字符。
例如,假设字符串是'foo',我想使用正则表达式导致:
<span>f</span><span>o</span><span>o</span>
这是可能的,还是我必须手动遍历字符串并自己进行包装?
答案 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>");