6

I'm trying the username chains in Java with following rules:

  • Length >=3
  • Valid characters: a-z, A-Z, 0-9, points, dashes and underscores.

Could someone help me with the regular expression?

4 Answers 4

18

try this regular expression:

^[a-zA-Z0-9._-]{3,}$
Sign up to request clarification or add additional context in comments.

3 Comments

[a-zA-Z0-9_.-]{3,} is more accurate as he wants to include "points dashes and underscores". See stackoverflow.com/questions/3028642/…
@TheCapn: I fixed it as you were writing your comment. :-)
You should add start ^ and end-of-string $ anchors for validation regexes like these (although the Java .matches() method does do this implicitly).
5

Sarkiroka solution is right, but forgot the dash and the point should be escaped.

You should add as \ to escape it, but mind that in Java the backslash is itself used to escape, so if you are writing the regex in a java file, you should write

String regex = "[a-zA-Z0-9\\._\\-]{3,}"; 

Note the double back slashes.

1 Comment

No need to escape ., and probably no need to escape - either since it's last in the class (but I'm unsure how Java handles this).
4

BTW, if there is an extra requirement: the starting letter of the username must be a character, you can write

try {
    if (subjectString.matches("\\b[a-zA-Z][a-zA-Z0-9\\-._]{3,}\\b")) {
        // Successful match 

    } else {
        // No match 

    }
} catch (PatternSyntaxException ex) {
    // Invalid regex 

}

Based on an example here.

Comments

1

What about:

    username.matches("[a-zA-Z0-9.\\-_]{3,}")

2 Comments

I don't think you have to escape the .-_ characters if they're in the [] but other than that it looks fine, though you should've commented on Richie's answer before posting your own.
The dash must be escaped, but it doesn't matter for the dot.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.