Multiple email validation regex with semicolon in javascript - javascript

Multiple email validation regex with semicolon in Javascript
It can allow mulptiple emails and can allow the semicolon after email id. If only one email id provided then it can allow with or without semicolon.
I tried below code:
<script type = "text/javascript" >
function myFunction() {
var email = document.getElementById("email").value;
var reg = /^([a-zA-Z0-9_\-\.]+)#([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-\.]+)+([;]([a-zA-Z0-9_\-\.]+)#([a-zA-Z0-9\-]+\.)+([a-zA-Z0-9\-\.]+))*$/;
if (reg.test(email) == false) {
alert("Entered email id is not valid")
return false;
} else {
alert("Entered email id is valid")
return true;
}
}
</script>

Try this approach.
It splits email list into individual addresses and loops over all of them. Also, it uses much simplified regex to check email validity.
Also, checking for validity of one email on the list should be more robust, this is only an example.
var email = document.getElementById("email").value;
console.log("Are emails valid: " + checkEmailValidity(email));
function checkEmailValidity(emailList) {
var reg = /^.+?#.+?\.\w{2,}$/i;
var emailArr;
if (emailList.indexOf(";") < emailList.indexOf("#")) {
//assume only one email address on the list
emailArr = [emailList];
} else {
emailArr = emailList.split(";")
}
var isValid = true;
emailArr.forEach(function(addr) {
if (reg.test(addr) === false) {
console.log("One of the emails is not valid: " + addr);
isValid = false;
}
})
return isValid;
}

Related

How can I create a function to validate an email and a username with a Javascript?

I'm very new in coding. I'm creating a newsletter form and I'll need people to register by entering a name (only letters) and a valid email address.I'm trying to create a javascript function but it does not work properly. Function is:
function validaIscrizione(username,email) {
var nameRegex = /^[a-zA-Z\-]+$/
var emailRegex = /^(([^<>()[\]\\.,;:\s#\"]+(\.[^<>()[\]\\.,;:\s#\"]+)*)|(\".+\"))#((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
if(
username==''|| username==undefined || nameRegex.test(username)||
email== '' || email == undefined || emailRegex.test(email)
)
{return false;}
else{return true;}
}
var button = document.getElementById('btn_1');
button.onclick=function(){
var login=document.getElementById('username').value;
var password=document.getElementById('email').value;
var result = document.getElementById('result');
if(validaIscrizione(username,email)){
result.innerHTML = "Grazie per aver effettuato la registrazione";
}else{
result.innerHTML = "Dati non validi";
}
}
"
am I missing something? Thank you in advance
I modify a little your validate function and put comments with the explanation:
function validaIscrizione(username, email) {
const nameRegex = /^[a-zA-Z\-]+$/;
const emailRegex = /^(([^<>()[\]\\.,;:\s#\"]+(\.[^<>()[\]\\.,;:\s#\"]+)*)|(\".+\"))#((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
// here you use short circuit for the falsy values like "" or undefined and validate the regex
const isUsernameValid = username && nameRegex.test(username);
const isEmailValid = email && emailRegex.test(email);
// here you return that is valid only if the two inputs pass your tests
return isUsernameValid && isEmailValid;
}

Why is my email validation not returning an error message I did set?

I made an email validation through Javascript. I know we can do validation through HTML, but I need to use Javascript. There are two methods that I used in this problem. First is conditioning, and second is regular expression matching. If an input email is wrong, then an error message will appear beside it, and if there's no error the form will direct to a PHP page. In my case, I input an email that I expect to get an error from, but it directs to the PHP page immediately, which is wrong.
What I want is there should be no '.' and '#' in the first and last index of the email
There should be an # and . as per the usual email structure
There should only be 1 # character
All characters are included.
Here is my javascript code after the html one,
const name = document.getElementById('name')
const lname = document.getElementById('lname')
const co = document.getElementById('co')
const email = document.getElementById('email')
const form = document.getElementById('form')
const error1 = document.getElementById('error1')
const error2 = document.getElementById('error2')
const error3 = document.getElementById('error3')
const error4 = document.getElementById('error4')
form.addEventListener('submit', (e) => {
let messages = []
var re =/^[A-Za-z]+$/;
if(!name.value.match(re)){
messages.push('error')
var err1="Contains number";
}
else{
err1="";
}
if(!lname.value.match(re)){
messages.push('error')
var err2="Contains number";
}
else{
err2="";
}
var t=co.value;
//we have a problem in contact number
if(t[4]!='-'||t[8]!='-'||t[0]!=0||t[1]!=9||t.length!=13){
messages.push('error')
var err3="Must follow the format";
}
else{
err3="";
}
var m=email.value;
var r=email.value.length;
var atposition=email.indexOf("#");
var dotposition=email.lastIndexOf(".");
var i, count, dot1;
for(i=0; i<r; i++){
if(m[i]=='#'){
count++;
}
if(m[i]=='.'){
dot1++;
}
}
if(atposition<1||atposition==m[r-1]||count>1||dotposition==m[r-1]||m[0]=='.'||dot1==0||count==0){
messages.push('error')
err4.push('Must follow email format')
}
if (messages.length > 0) {
e.preventDefault()
error1.innerText = err1
error2.innerText = err2
error3.innerText = err3
error4.innerText = err4
}
})
Here is my method on regular expression matching:
var re=/^[\w-\.]+#([\w-]+\.)+[\w-]{2,4}$/
if(!email.value.match(re)){
messages.push('error')
err4.push('Must follow email format')
}
try this one.
var mailformat = /^([a-zA-Z0-9_\.\-])+\#(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]
{2,4})+$/;
var email = $('#email').val();
if(!mailformat.test(email_value)){
e.preventDefault();
$('#error-email-txt').html('Enter valid email address');
$('#error-email').css("display",'block');
}

How to check regex match in javascript

I am having trouble with regex checking in javascript. I want when the user inputs in something to the text field my function should alert 'matched' or 'no match' according the regex in my code below. Please help
function chech_password() {
var str = document.getElementById("pass").value;
var patt = new RegExp("^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$");
var ress = patt.test(str);
if (ress != true) {
//$('#error_pass').html("wrong pasmatch");
//$('#error_pass').show();
//error_pass = true;
alert("no match");
} else {
//$('#error_pass').hide();
alert("match");
}
}

Dynamic method for Javascript Validation

I am trying to come up with one function that can handle if statements in my code to avoid repetition of the same. For example in the code below
// email
App.Cmp.form.ValidateEmail = function(email) {
var MyEmailId = document.getElementById(email);
var format = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+#[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
if (!MyEmailId.value.match(format)) {
this.displayWarning(email, MyEmailId.parentNode.id, "Invalid email!");
} else {
removeWarning(email, MyEmailId.parentNode.id);
}
}
// password
App.Cmp.form.ValidatePassword = function(password) {
var MyPasswordId = document.getElementById(password);
var format = /(?=^.{8,}$)(?=.*\d)(?=.*[!##$%^&*]+)(?![.\n])(?=.*[A-Z])(?=.*[A-Z]).*$/;
if (!MyPasswordId.value.match(format)) {
this
.displayWarning(
password,
MyPasswordId.parentNode.id,
"The password must have uppercase, lowercase, numeric and special characters and at least 8 characters long");
} else {
this.removeWarning(password, MyPasswordId.parentNode.id);
}
}

Validating email using js

I trying to create this form that only allows people to submit an email that is using a #msu.edu email. I have the alert that is coming up when it's not a msu.edu email, but when I use an email like test#msu.edu its not submitting the form.
function checkMail() {
var email = document.validation.email.value.toLowerCase();
var filter = /^([\w-]+(?:\.[\w-]+)*)#msu.edu/i;
var result = filter.test(email);
alert('Valid email found: ' + result);
return result;
}
You need to escape the . there.
Correct code:
function checkMail() {
var email = document.validation.email.value.toLowerCase();
var filter = /^([\w-]+(?:\.[\w-]+)*)#msu\.edu/i;
// ^-- escape this dot
var result = filter.test(email);
alert('Valid email found: ' + result);
return result;
}
Demo
Format in just like this... var filter = /^([\w-]+(?:\.[\w-]+)*)#msu\.edu/i; as per Gaurang said. It works.
why not try this
bool IsValidEmail(string email)
{
try {
var addr = new System.Net.Mail.MailAddress(email);
return true;
}
catch {
return false;
}
}
This will do it
put this function onclick event of button and change getelementById's Id with your TextBox Id and this will give you alert "msu.edu"
function checkMail()
{
var email = document.getElementById("email").value.toLowerCase();
var regex = /^(([^<>()[\]\\.,;:\s#\"]+(\.[^<>()[\]\\.,;:\s#\"]+)*)|(\".+\"))#((\ [[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; ;
if (regex.test(email))
{
var temp = email.substring(email.lastIndexOf("#")+1);
if (temp != "msu.edu")
{
alert("Enter correct email");
}
}
}

Categories

Resources