Password regex not working fine -


i'm using

function validatepassword(password) {     var re = /^(?=.*[a-za-z])(?=.*[$@.$!%*#?&0-9])[a-za-z\d$@.$!%*#?&]{0,100}$/i;     return re.test(password);  }  

for password contains @ least 1 numbers or special character it's working fine atleast 1 character if no character returns false though give number or special character

the /^(?=.*[a-za-z])(?=.*[$@.$!%*#?&0-9])[a-za-z\d$@.$!%*#?&]{8,15}$/i matches

  • ^ - start of string
  • (?=.*[a-za-z]) - requires @ least 1 ascii letter in line
  • (?=.*[$@.$!%*#?&0-9]) - requires digit or special symbols.
  • [a-za-z\d$@.$!%*#?&]{8,15} - 8 15 letters, digits , specified special symbols
  • $ - end of string
  • /i - case insensitive matching

the (?=.*[a-za-z]) lookahead requires letter. if not need that, remove lookahead.

use

/^(?=.*[$@.!%*#?&0-9])[a-za-z\d@.$!%*#?&]{8,15}$/i 

or - if password must contain atleast 1 number , 1 special character:

/^(?=[^0-9]*[0-9])(?=[^$@.!%*#?&]*[$@.!%*#?&])[a-z0-9@.$!%*#?&]{8,15}$/i 

where (?=.*[$@.!%*#?&0-9]) split 2 lookaheads: (?=[^0-9]*[0-9]) requires @ least 1 digit , (?=[^$@.!%*#?&]*[$@.!%*#?&]) requires @ least 1 special symbol specified set.

demo:

function validatepassword(password)  {      var re = /^(?=[^0-9]*[0-9])(?=[^$@.!%*#?&]*[$@.!%*#?&])[a-z0-9@.$!%*#?&]{8,15}$/i;      return re.test(password);   }  console.log(validatepassword("password"));  console.log(validatepassword("12345678"));  console.log(validatepassword("12345678morewords"));  console.log(validatepassword("12468word!"));


Comments

Popular posts from this blog

javascript - Thinglink image not visible until browser resize -

firebird - Error "invalid transaction handle (expecting explicit transaction start)" executing script from Delphi -

mongodb - How to keep track of users making Stripe Payments -