我必须根据用户输入的电子邮件检查用户输入,以检查它们是否太相似,如果它们是我需要抛出错误。例如;
“用户名不能与电子邮件地址过于相似,例如,如果电子邮件地址是 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
}
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;
}
我想在这里扩展现有的答案。您说这是一项任务,但在许多应用程序中都可以看到此要求 - 这里的答案对于在生产中实现此功能的用户仍然有用。
首先要做的是定义你认为“相似”的东西。例如,大写/小写。是不是bob
太相似了BoB
?在我看来是这样。所以我们要做的第一件事就是将所有字符串转换为相同的大小写。在 JavaScript 中,你有toLowerCase()
. 您可能还认为某些符号没有对字符串进行足够的更改,因此希望忽略它们。例如,bob
与 非常相似b.ob
。对于这种情况,您可能希望删除那些“无意义”的符号。使用 JavaScript,为此您可以使用replace()
.
在实施条件之前,必须先定义法律。
最后要注意的是,您正在执行客户端验证。如果用户禁用 JavaScript 或更改页面上的代码,则可以轻松绕过在 JavaScript 中完成的任何验证。此类验证应始终在服务器上完成。您可以将客户端验证留在那里以改善用户体验,也可以不向服务器发送明显无效的请求。