我使用的是正则表达式替换所有字符以外"^",并" "像这样:
var s = string.replace(/[^\^ ]/g,"X");
Run Code Online (Sandbox Code Playgroud)
它可以工作,但正如你所看到的,它正在用一个替换所有非黑名单的字符X.这是暂时的.我希望能够用标签包装而不是替换所有未列入黑名单的字符.
例如,假设字符串是'foo',我想使用正则表达式导致:
<span>f</span><span>o</span><span>o</span>
Run Code Online (Sandbox Code Playgroud)
这是可能的,还是我必须手动迭代字符串并自己进行包装?
你可以替换
<span>$&</span>
Run Code Online (Sandbox Code Playgroud)
$&包含整个匹配的值,因此将使用span标记包围每个不需要的字符:
>> 'foo'.replace(/[^\^ ]/g, '<span>$&</span>')
"<span>f</span><span>o</span><span>o</span>"
Run Code Online (Sandbox Code Playgroud)
+如果你想要包围整个不需要的字符序列,你也可以在你的正则表达式中添加一个字符类:
>> 'foo'.replace(/[^\^ ]+/g, '<span>$&</span>')
"<span>foo</span>"
Run Code Online (Sandbox Code Playgroud)