0

フォームのメールアドレスを作成/マスクするために、3文字を他の3文字に置き換えようとしています。

これは、1回だけ、またはそれを見つけた最初のインスタンスでのみ機能します。

email = "email1#domain!com|email2#domain!com|email3#domain!com";
email.replace("#","@").replace("!",".").replace("|",",");

上記のコードの結果:email1 @ domain.com、email2#domain!com | email3#domain!com

いくつか読んだ後、コーディングの一部であるRegExの使用について読みましたが、頭を悩ませることはできません。

email.replace("/#/g","@").replace("/!/g",".").replace("/|/g",",");

それも機能せず、元の変数と同じままになりました。

私は何が間違っているのですか?

4

3 に答える 3

4

正規表現を引用符で囲まないでください。/正規表現は、境界として使用されるリテラルです。

|さらに、それは特別な意味を持っているので、あなたは脱出する必要があります。

最後に、.replace変革的ではありません。結果を返します。

email = email.replace(/#/g,'@').replace(/!/g,'.').replace(/\|/g,',');
于 2012-09-25T22:29:11.080 に答える
1

正規表現リテラルを使用して、引用符を省略します(パイプをエスケープする必要があります)。

email.replace(/#/g,"@").replace(/!/g,".").replace(/\|/g,",");
于 2012-09-25T22:28:49.820 に答える
0
email = "email1#domain!com|email2#domain!com|email3#domain!com";
email=email.replace(/#/g,"@").replace(/!/g,".").replace(/\|/g,",");
于 2012-09-25T22:34:10.257 に答える