Jump to content

regex not working


kwame123

Recommended Posts

this is my code 

$re = '/[^\W][a-zA-Z\d.-]{3,20}/';
if(!preg_match_all($re, $username)){
 do something
  }else{
 do somthing else
}


$username is a $_POST['username'];
when i submit a 3 letter word it works
but when i use symbols like $ and ! and etc it still goes through,
im trying to get a regex where the username is 4-20 characters long and only the alphabet and numbers and
dots and dash but dots and dashs cant be next to each other
 
thx :(
Link to comment
Share on other sites

Your regex doesn't say that at all. You have no anchors (which means a substring match is sufficient), and for some strange reason you're using preg_match_all(), as if you expected multiple matches.

 

If you only want to allow dashes and dots as delimiters between alphanumerics, that's

'/\\A[a-z\\d]+(?:[.-][a-z\\d]+)*\\z/i'

Length checks are the job of strlen() or mb_strlen().

Link to comment
Share on other sites

Your regex doesn't say that at all. You have no anchors (which means a substring match is sufficient), and for some strange reason you're using preg_match_all(), as if you expected multiple matches.

 

If you only want to allow dashes and dots as delimiters between alphanumerics, that's

'/\\A[a-z\\d]+(?:[.-][a-z\\d]+)*\\z/i'

Length checks are the job of strlen() or mb_strlen().

oh my goodness thank you so much. :) not its fixed!

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.