2012-05-15 101 views
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 “”)

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

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

任何帮助,将不胜感激。

回答

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

先生们,我真的很感谢回应。它工作完美。我对javascript的使用经验有限,我非常欣赏响应的优雅。 PS:我在调试时正在使用下划线。实时代码中的字符串会有所不同。再次感谢。 – charris

+0

啊,好吧。很高兴我能帮上忙! –

1

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

另外,还可以代替链:

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

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

+0

+1表示“但如果原始字符串包含_xy_或_yy_,会发生什么情况”。 OP应该考虑这一点。 –