2012-10-07 192 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中執行的任何驗證。這種驗證應該在服務器上完成總是。您可以將客戶端驗證保留在那裏,以改善用戶體驗,並且不會向服務器發送顯然無效的請求。