0

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

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

我也想知道它是否可以通过消除多步骤替换来使它变得优雅。

任何帮助,将不胜感激。

4

2 回答 2

1

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

此外,您可以链接替换:

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

但是如果原始字符串包含_xy_or会发生什么_yy_

于 2012-05-15T14:20:42.787 回答
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(".");
于 2012-05-15T14:19:29.460 回答