【问题标题】:How do you replace a character class pattern with regex in javascript你如何在javascript中用正则表达式替换字符类模式
【发布时间】:2016-01-06 20:53:28
【问题描述】:

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

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

这是我的代码:

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

因为模式“\W”是一个字符类,所以我试图做的转义都不是响应。这个应该怎么写?

【问题讨论】:

标签: javascript regex


【解决方案1】:

尝试RegExp构造函数new RegExp("(\W)|(R$)", "g").replace()函数内的三元match === "W" ? "&lt;span&gt;" + match + "&lt;/span&gt;" : "\\" + 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);

【讨论】:

    【解决方案2】:

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

    在命令行运行时

    > '\W\W\R'
    WWR
    

    对字符串中的斜线进行双重转义

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

    【讨论】:

      【解决方案3】:

      问题不是正则表达式,而是你的字符串,在字符串中\ 是一个转义字符,所以如果你想要\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>

      【讨论】:

        【解决方案4】:

        只需确保匹配的字符实际上是大写字母'W',只需将其包裹在方括号[]中即可

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

        :)

        【讨论】:

        • 这个答案对我不起作用。你测试过吗?
        • 因为 javascript 中的字符串 "\W\W\R" 实际上意味着 "WWR",所以我们可以忽略反斜杠 ` \ `。请参阅:stackoverflow.com/questions/2479309/…
        猜你喜欢
        • 2016-07-31
        • 2012-02-12
        • 1970-01-01
        • 2019-11-12
        • 2011-02-17
        • 2017-11-03
        • 1970-01-01
        • 2013-01-21
        • 1970-01-01
        相关资源
        最近更新 更多