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

replacing string with a period isn't working

本文关键字:不起作用 字符串 替换 句点      更新时间:2023-09-26

我试图混淆网页上的电子邮件地址。我有一个正则表达式,可以将 @ 转换为 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, ".");

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

我还想知道是否有可能通过消除多步骤替换来使其优雅。

任何帮助将不胜感激。

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

此外,您还可以链接替换:

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

但是,如果原始字符串包含_xy__yy_会发生什么?

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

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(".");