如何在javascript中使用正则表达式替换字符类模式

时间:2015-10-09 03:08:41

标签: javascript regex

我有这个字符串:"\W\W\R\"

我想使用正则表达式来生成此字符串:<span>W</span><span>W</span>\R

这是我的代码:

"\W\W\R".replace(/\\W/g, "<span>W</span>");

因为模式“\ W”是一个字符类,所以我试图逃避的任何一个都没有响应。该怎么写?

4 个答案:

答案 0 :(得分:1)

尝试RegExp构造函数new RegExp("(\W)|(R$)", "g")match === "W" ? "<span>" + match + "</span>" : "\\" + match函数中的三元.replace()返回替换字符串

&#13;
&#13;
var str = "\W\W\R" , res;
res = str.replace(new RegExp("(\W)|(R$)", "g"), function(match) {
  return match === "W" ? "<span>" + match + "</span>" : "\\" + match
});
console.log(res);
document.write(res);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

字符串中的\用于转义其后的特殊字符,因此您的字符串\W\W\R将被视为WWR

在命令行上运行时

> '\W\W\R'
WWR

双重转义字符串中的斜杠

&#13;
&#13;
var str = "\\W\\W\\R".replace(/\\W/g, "<span>W</span>");
console.log(str);
&#13;
&#13;
&#13;

答案 2 :(得分:1)

问题不在于正则表达式,它是你的字符串,在字符串\中是一个转义字符,所以如果你想要\W\W\R那么你的字符串文字应该是"\\W\\W\\R" SO

&#13;
&#13;
var res = "\\W\\W\\R".replace(/\\W/g, "<span>W</span>");
snippet.log(res)
&#13;
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;

答案 3 :(得分:0)

只需确保匹配的字符实际上是大写字母&#39; W&#39;将其包裹在方括号[]

"\W\W\R".replace(/[W]/g, "<span>W</span>");

:)