JavaScript替换不替换第二个<

时间:2014-09-03 17:22:23

标签: javascript jquery html visual-studio xss

我正在尝试替换<和>带有>&的HTML标记的迹象<使用JavaScript。我使用以下代码:

var sval = val.replace('&', '&');
sval = sval.replace("<", "&lt;");
sval = sval.replace(">", "&gt;");

但它只替换了第一次出现的&lt;。以下是断点处的值的快照: enter image description here

3 个答案:

答案 0 :(得分:3)

尝试使用正则表达式:

var sval = val.replace(/&/g, '&amp;');
sval = sval.replace(/</g, "&lt;");
sval = sval.replace(/>/g, "&gt;");

g标志(=全局)告诉替换功能在第一次击中后不会停止。

答案 1 :(得分:2)

使用g作为第三个参数来删除所有出现

var sval = val.replace('&', '&amp;','g')
              .replace("<", "&lt;",'g')
              .replace(">", "&gt;",'g');
// g represents global match

Documentation : replace()

答案 2 :(得分:1)

    var sval = val.replace(/&/g, '&amp;').replace(/</g, "&lt;").replace(/>/g, "&gt;");