[英]How do you repeat a pattern and extract the contents in Javascript regex
[英]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.