我想将所有<
替换为<
,将>
替换为>
。
我使用了.replace()
功能,但它无法使用g
或gi
。
此处示例 - http://jsfiddle.net/krishnaTORQUE/RSxnZ/1/
答案 0 :(得分:3)
我建议:
var str = '< and >',
encoded = str.replace(/<|>/g, function(a){
return a == '<' ? '<' : '>';
});
console.log(encoded);
至于为什么你自己的尝试不起作用,在我们看到你的尝试之前,我们无法说出来。
鉴于发布的链接(请注意,在您的问题中显示您的代码更有用),我建议:
function disp()
{
var text = document.getElementById('textarea').value,
output = document.getElementById('ibox');
ibox.appendChild(document.createTextNode(
text.replace(/<|>/g, function(a){
return a == '<' ? '<' : '>';
})
));
}
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 == '<' ? '<' : '>';
})
));
}
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);
参考文献:
答案 1 :(得分:1)
尝试这样的事情: -
text = text.replace(/</g, "<").replace(/>/g, ">");
答案 2 :(得分:0)
使用单个正则表达式和函数:
var str = '< and >',
var encoded = str.replace(/(<)|(>)/g,
function(match, p1, p2)
{
if (p1) return '<';
else return '>'; // equivalent to else (p2)
})
请注意使用包含带括号的子匹配1 p1
和2 p2
(<)
和(>)
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace