電子メールの全角文字をx文字に置き換えようとしています。例えば、"[email protected]" は "myxemail@emailxcom" となります。メールは文字列に設定されています。
問題は、フルストップだけではなく、すべての文字を置き換えてしまうので、x'の文字列になってしまうのです。
フルストップ1つで動作させることはできるので、グローバルインスタンスの部分が間違っているのではないかと思っています。以下が私のコードです。
let re = ".";
let new = email.replace(/re/gi, "x");
また、次のことも試してみました。
re = /./gi;
new = email.replace(re, "x");
誰か教えてくれたら本当に感謝します。私は長い間この問題に取り組んでいて、どこで間違っているのかわからないのです。
** 編集: おっと、私の新しい変数は実際にはnewemailと呼ばれていて、キーワードnewは問題を起こしていませんでした
2番目の例が一番近いですね。最初の問題は、あなたの変数名である new
です。これはたまたま JavaScript'の reserved keywords のひとつです (代わりに new RegExp
や new Set
のようなオブジェクトを構築するために使用されます)。これは、プログラムがシンタックスエラーを起こすことを意味します。
また、ドット(.
)は正規表現の文法の中では特殊な文字なので、それを \.
としてエスケープする必要があります。そうしないと、result == "xxxxxxxxxxxxx"
となってしまい、好ましくありません。
let email = "[email protected]"
let re = /\./gi;
let result = email.replace(re, "x");
console.log(result)
私が使っていた split()
や join()
を試してみてください。(通常の文字列の場合)
短くて簡単に実装でき、理解できました。
以下はその例です。
let email = "[email protected]";
email.split('.').join('x');
これにより、すべての .
を x
に置き換えます。つまり、上記の例では、email
は、myxemail@gmailxcom
となります。