2012-10-07 141 views
0

我必须检查用户输入与他们的输入电子邮件,以检查他们是否太相似,如果他们是我需要抛出一个错误。例如;互相检查输入jQuery

“用户名不能与电子邮件地址太相似,例如,如果电子邮件地址是[email protected],则用户名不能被查理。

我该怎么去做这件事?

编辑:我想检查用户名与电子邮件地址的第一部分,该部分@

+3

首先,您必须自己定义“太相似”的含义。一旦你知道这只是一个实施这些条件的问题。为了得到一些具体的答案,你必须要更具体些。 – Lix

+0

此情况仍允许使用类似用户名的电子邮件。 'bob1 @ email.com'将被允许。您也可以考虑这些情况。 – Lix

+0

这部分工作是为了uni任务,他们只测试整个事情是否相似,而不是章节。虽然谢谢! – user1725794

回答

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 
} 
+0

如果用户名是'bob'而电子邮件是'bob1 @ gmail.com',这个测试不会太有效。 – Lix

+0

@Lix从op的例子来看,这填写了要求。 – xdazz

+0

我不会争论关于条件的假设。这个问题清楚地表明''不能太相似'“。但是,您只能搜索完全匹配。 – Lix

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; 

} 
0

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

定义你认为“相似”是第一件要做的事情。例如,大/小写。是bob太类似BoB?在我看来是这样。所以我们要做的第一件事就是将所有字符串转换为相同的大小写。在JavaScript中你有toLowerCase()。您也可以决定某些符号不会更改字符串,因此会忽略它们。例如,bobb.ob非常相似。对于这种情况,您可能需要删除这些“无意义”的符号。使用JavaScript,为此,您可以使用replace()

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

最后要说明的是,您正在执行客户端验证。如果用户禁用JavaScript或更改页面上的代码,则可以轻松绕过在JavaScript中执行的任何验证。这种验证应该在服务器上完成总是。您可以将客户端验证保留在那里,以改善用户体验,并且不会向服务器发送显然无效的请求。