用句点替换字符串不起作用

时间:2012-05-15 14:17:43

标签: javascript

我正在尝试模糊网页上的电子邮件地址。我有一个正则表达式,将@转换为 xy ,将句点转换为 yy 。那很有效。我有一个js,在提交页面时执行以将它们转换回来,但这不起作用。那个脚本是:

function undo(){
    var oldfield = document.getElementById('hchtest').value;
    var newfield = oldfield.replace("_xy_", "@");
    var nu2field = newfield.replace("_yy_", "\.");

    document.getElementById('hchtst2').value = nu2field;
}

无效的陈述是var nu2field = newfield.replace( yy ,“。”);

我已经尝试了我能想到的每一个组合(例如,没有转义字符,作为正则表达式等),但没有快乐。

我还想知道它是否可以通过消除多步替换来实现这种优雅。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

您不需要在字符串中转义..replace(/_yy_/g,'.')应该可以正常工作。

此外,您可以链接替换:

document.getElementById('hchtst2').value =
    document.getElementById('hchtest').value.replace(/_xy_/g,'@').replace(/_yy_/g,'.');

但如果原始字符串包含_xy__yy_

会发生什么情况

答案 1 :(得分:0)

你不想要这个吗?为什么额外的下划线?

var newfield = oldfield.replace("xy", "@");
var nu2field = newfield.replace("yy", "\.");

无论如何,这是另一种解决方案:

var newfield = oldfield.split("xy").join("@");
var nu2field = newfield.replace("yy").join(".");

一个单行:

var newfield = oldfield.split("xy").join("@").split("yy").join(".");