繁体   English   中英

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

[英]How do you replace a character class pattern with regex in javascript

我有以下字符串: "\\W\\W\\R\\"

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

这是我的代码:

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

因为模式“ \\ W”是字符类,所以我尝试执行的所有转义都没有响应。 应该怎么写?

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

 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); 

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

在命令行上运行时

> '\W\W\R'
WWR

两次转义字符串中的斜线

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

问题不在于正则表达式,而是您的字符串,字符串\\中的字符是转义字符,因此,如果您想要\\W\\W\\R则字符串文字应为"\\\\W\\\\W\\\\R" SO

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

只需将其包装在方括号中即可确保匹配的字符实际上是大写字母“ W”

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

:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM