Search code examples
javascriptjqueryvalidationindexof

check if string does not contain values


I am using indexOf to see if an email contains anything other than a particular text.

For example, I want to check if an email DOES NOT include "usa" after the @ symbol, and display an error message.

I was first splitting the text and removing everything before the @ symbol:

var validateemailaddress = regcriteria.email.split('@').pop();

Then, I check if the text doesn't include "usa":

if(validateemailaddress.indexOf('usa')){
    $('#emailError').show();
} 

Something with the above check doesn't seem right. It works - I can enter an email, and if it does not include 'usa', then the error message will show.

Regardless, when I add an additional check, like if the email does not include "can", then the error message shows no matter what.

As follows:

if(validateemailaddress.indexOf('usa') || validateemailaddress.indexOf('can')){
    $('#emailError').show();
} 

As stated, using the above, the error message will show regardless if the email includes the text or not.

All I want to do is check if the email includes 'usa' or 'can', and if it doesn't, then show the error message.

How can I make this work?


Solution

  • Here is a simple JavaScript function to check if an email address contains 'usa' or 'can'.

    function emailValid(email, words) {
        // Get the position of @ [indexOfAt = 3]
        let indexOfAt = email.indexOf('@');
    
        // Get the string after @ [strAfterAt = domain.usa]
        let strAfterAt = email.substring(indexOfAt + 1);
    
        for (let index in words) {
            // Check if the string contains one of the words from words array
            if (strAfterAt.includes(words[index])) {
                return true;
            }
        }
    
        // If the email does not contain any word of the words array
        // it is an invalid email
        return false;
    }
    
    let words = ['usa', 'can'];
    
    if (!emailValid('[email protected]', words)) {
        console.log("Invalid Email!");
        // Here you can show the error message
    } else {
        console.log("Valid Email!");
    }