入力した電子メールに対してユーザーの入力をチェックして、類似しすぎているかどうかを確認する必要があります。類似している場合は、エラーをスローする必要があります。例えば;
「ユーザー名がメール アドレスに似すぎてはいけません。たとえば、メール アドレスが charlie@hud.ac.uk の場合、ユーザー名を charlie にすることはできません。」
どうすればこれを行うことができますか?
編集: メールアドレスの最初のセクション、@ の前のセクションに対してユーザー名を確認したい
var email, username;
if (username === email.split('@')[0]) {
alert('failed');
}
これにより、ユーザー名が電子メールのユーザー名部分と比較されます。
編集:
要点は、によって電子メールからユーザー名の部分を取得できることemail.split('@')[0]
です。
function is_similar (str1, str2) {
// implement your similar logic here
// return true or false
}
ここでは、既存の回答を拡張したいと思います。これは課題のためだとおっしゃいましたが、この要件は多くのアプリケーションで見られます。ここでの回答は、本番環境でこの機能を実装するユーザーにとって引き続き役立ちます。
「似ている」と考えるものを定義することが、最初に行うことです。たとえば、大文字/小文字。bob
にあまりにも似ていBoB
ますか?私の意見ではそうです。したがって、最初に行うことは、すべての文字列を同じケースに変換することです。JavaScript では、toLowerCase()
. また、特定のシンボルが文字列を十分に変更しないため、それらを無視する必要があると判断する場合もあります。たとえば、bob
は によく似ていb.ob
ます。そのような場合、それらの「意味のない」記号を削除したい場合があります。JavaScript では、この目的のためにreplace()
.
条件を実装する前に、法律を定義する必要があります。
ここでの最後の注意点は、クライアント側の検証を実行していることです。ユーザーが JavaScript を無効にしたり、ページのコードを変更したりすると、JavaScript で行われる検証は簡単にバイパスされる可能性があります。この種の検証は、常にサーバー上で行う必要があります。クライアント側の検証をそこに残して、ユーザーエクスペリエンスを向上させ、明らかに無効なリクエストをサーバーに送信しないようにすることができます.
function checkUsernameAndEmail(){
var email = document.getElementById("email").value;
var user = document.getElementById("username").value;
// check to see if the email contains the username in anypart
if(email.split("@")[0].toLowerCase().indexOf(user.toLowerCase() ) > -1){
alert("Email address cannot contain the username");
return false;
}
return true;
}