0

我想替换所有<to&lt;>to &gt;

我已经使用了该.replace()功能,但它不适用于gor gi

这里的例子 -http://jsfiddle.net/krishnaTORQUE/RSxnZ/1/

4

3 回答 3

3

我建议:

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

JS 小提琴演示

至于为什么你自己的尝试没有奏效,在我们看到你的尝试之前是不可能说的。

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

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 演示,代码在 Ubuntu 12.10 上的 Chromium 28 中测试。

并稍微更新以使用不显眼的 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 小提琴演示

参考:

于 2013-09-02T19:39:19.127 回答
1

尝试这样的事情: -

text = text.replace(/</g, "&lt").replace(/>/g, "&gt");
于 2013-09-02T19:38:51.287 回答
0

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

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

注意使用p1andp2将包含带括号的子匹配 1(<)和 2(>)

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

于 2013-09-02T19:43:40.367 回答