我正在尝试模糊网页上的电子邮件地址。我有一个正则表达式,将@转换为 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 ,“。”);
我已经尝试了我能想到的每一个组合(例如,没有转义字符,作为正则表达式等),但没有快乐。
我还想知道它是否可以通过消除多步替换来实现这种优雅。
任何帮助都将不胜感激。
答案 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(".");