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