Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java regex match for alphanumeric string

Tags:

java

regex

match

I am trying to check whether a password is alphanumeric or not using regex but I am not getting the result I expect. What is the problem with the below code?

boolean passwordOnlyAlphaNumericCheck = false;
Pattern patternAlphaNumericCheck = Pattern.compile("^[a-zA-Z0-9]$");
Matcher matcherAlphaNumericCheck = patternAlphaNumericCheck.matcher(login.getPassword());
if(matcherAlphaNumericCheck.find())
  passwordOnlyAlphaNumericCheck = true;

Thanks for help

like image 280
Saim Doruklu Avatar asked Jan 31 '26 21:01

Saim Doruklu


1 Answers

You need to add a quantifier that suits your requirements: * - 0 or more occurrences or + - 1 or more occurrences. You can also omit the ^ and $ and use String.matches():

boolean passwordOnlyAlphaNumericCheck = false;
if(login.getPassword().matches("[a-zA-Z0-9]*"))
  passwordOnlyAlphaNumericCheck = true;

To match all Unicode letters, use \p{L} class (and perhaps, \p{M} to match diacritics): "[\\p{L}\\p{M}0-9]+".

what is the difference between login.getPassword().matches("[0-9a-zA-Z]*"); and login.getPassword().matches("[0-9a-zA-Z]");?

The .matches("[0-9a-zA-Z]") will only return true if the whole string contains just 1 digit or letter. The * in [0-9a-zA-Z]* will allow an empty string, or a string having zero or more letters/digits.

like image 162
Wiktor Stribiżew Avatar answered Feb 02 '26 15:02

Wiktor Stribiżew