0

我必须根据用户输入的电子邮件检查用户输入,以检查它们是否太相似,如果它们是我需要抛出错误。例如;

“用户名不能与电子邮件地址过于相似,例如,如果电子邮件地址是 charlie@hud.ac.uk,则用户名不能是 charlie。”

我怎么能这样做呢?

编辑:我想根据电子邮件地址的第一部分(@之前的部分)检查用户名

4

3 回答 3

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
}
于 2012-10-07T11:17:04.467 回答
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;

}
于 2012-10-07T11:21:58.963 回答
0

我想在这里扩展现有的答案。您说这是一项任务,但在许多应用程序中都可以看到此要求 - 这里的答案对于在生产中实现此功能的用户仍然有用。

首先要做的是定义你认为“相似”的东西。例如,大写/小写。是不是bob太相似了BoB?在我看来是这样。所以我们要做的第一件事就是将所有字符串转换为相同的大小写。在 JavaScript 中,你有toLowerCase(). 您可能还认为某些符号没有对字符串进行足够的更改,因此希望忽略它们。例如,bob与 非常相似b.ob。对于这种情况,您可能希望删除那些“无意义”的符号。使用 JavaScript,为此您可以使用replace().

在实施条件之前,必须先定义法律。

最后要注意的是,您正在执行客户端验证。如果用户禁用 JavaScript 或更改页面上的代码,则可以轻松绕过在 JavaScript 中完成的任何验证。此类验证应始终在服务器上完成。您可以将客户端验证留在那里以改善用户体验,也可以不向服务器发送明显无效的请求。

于 2012-10-07T11:41:31.810 回答