【问题标题】:Javascript find and replace a set of characters?Javascript查找和替换一组字符?
【发布时间】:2011-09-11 19:41:54
【问题描述】:

我有一个字符串,我需要将所有 ' 等替换为正确的值

我正在使用

var replace = str.replace(new RegExp("[']", "g"), "'");

这样做,但问题是它似乎要为每个字符替换 '(例如,' 变为 '''''

有什么帮助吗?

【问题讨论】:

  • 错误是在使用[]。如果您删除它们,它应该可以工作。或者使用 arnaud 建议的更紧凑的 JS 表示法。

标签: javascript


【解决方案1】:

使用这个:

var str = str.replace(/'/g, "'");

['] 是一个字符类。它表示大括号内的任何字符

这就是为什么您的/[']/ 正则表达式用替换字符串替换' 的每个字符。


如果您想使用 new RegExp 而不是正则表达式:

var str = str.replace(new RegExp(''', 'g'), "'");

这没有任何好处,除非您想在运行时生成正则表达式。

【讨论】:

  • 这两个似乎都会产生错误“未终止的正则表达式文字”
【解决方案2】:

取出括号,组成一个字符类(里面的任何字符都匹配):

var replace = str.replace(new RegExp("'", "g"), "'");

或者更好的是,使用文字:

var replace = str.replace(/'/g, "'");

编辑:请参阅有关如何转义 HTML 的问题:How to unescape html in javascript?

【讨论】:

  • 这两个似乎都会产生错误“未终止的正则表达式文字”
  • @Steven 你是如何使用它的?
【解决方案3】:

与其使用一堆正则表达式替换,我会做这样的事情,让浏览器为你处理解码:

    function HtmlDecode(s) {
        var el = document.createElement("div");
        el.innerHTML = s;
        return el.innerText || el.textContent;
    }

【讨论】:

  • +1 好主意...尽管您不需要调用delete el;(它没有任何效果,甚至在严格模式下会引发错误)。你可以做return el.innerText || el.textContent;
猜你喜欢
  • 1970-01-01
  • 2011-08-22
  • 2016-02-08
  • 1970-01-01
  • 2021-11-15
  • 2021-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多