如何使用javascript替换多个字符

时间:2013-09-02 19:35:58

标签: javascript

我想将所有<替换为&lt;,将>替换为&gt;

我使用了.replace()功能,但它无法使用ggi

此处示例 - http://jsfiddle.net/krishnaTORQUE/RSxnZ/1/

3 个答案:

答案 0 :(得分:3)

我建议:

var str = '< and >',
    encoded = str.replace(/<|>/g, function(a){
                  return a == '<' ? '&lt;' : '&gt;';
              });
console.log(encoded);

JS Fiddle demo

至于为什么你自己的尝试不起作用,在我们看到你的尝试之前,我们无法说出来。

鉴于发布的链接(请注意,在您的问题中显示您的代码更有用),我建议:

function disp()
{    
    var text = document.getElementById('textarea').value,
        output = document.getElementById('ibox');
    ibox.appendChild(document.createTextNode(
        text.replace(/<|>/g, function(a){
            return a == '<' ? '&lt;' : '&gt;';
        })
    ));
}

JS Fiddle demo,代码测试在Chromium 28中,在Ubuntu 12.10上。

稍微更新一下,使用不引人注目的JavaScript(远离内联事件处理程序):

function disp()
{    
    var text = document.getElementById('textarea').value,
        output = document.getElementById('ibox');
    ibox.appendChild(document.createTextNode(
        text.replace(/<|>/g, function(a){
            return a == '<' ? '&lt;' : '&gt;';
        })
    ));
}

var inputs = document.getElementsByTagName('input'),
    button;
console.log(inputs);

for (var i = 0, len = inputs.length; i < len; i++) {
    if (inputs[i].type == 'button' && inputs[i].value == 'click') {
        button = inputs[i];
    }
}

button.addEventListener('click', disp);

JS Fiddle demo

参考文献:

答案 1 :(得分:1)

尝试这样的事情: -

text = text.replace(/</g, "&lt").replace(/>/g, "&gt");

答案 2 :(得分:0)

使用单个正则表达式和函数:

var str = '< and >',
var encoded = str.replace(/(<)|(>)/g, 
              function(match, p1, p2) 
              { 
                  if (p1) return '&lt;'; 
                  else return '&gt;'; // equivalent to else (p2)
              })

请注意使用包含带括号的子匹配1 p1和2 p2

(<)(>)

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace