Regular Expressions (Regex) in Java are used to search, match, and manipulate text based on defined patterns. Character classes are an important part of regex that allow a pattern to match one character from a specified set or range of characters.
- Match characters from a defined set, such as [abc] or [0-9].
- Simplify patterns by representing multiple possible characters concisely.
- Help validate structured input such as usernames, phone numbers, and passwords.
public class GFG{
public static void main(String[] args){
String input = "abc123";
System.out.println(input.matches(".*[a-z]+.*")); // true
}
}
Output
true
Explanation:
- .* allows any characters before and after the pattern.
- [a-z]+ checks that the string contains at least one lowercase letter, so "abc123" matches and returns true.
Syntax
[characters]
Types of Character Classes in Java Regex
1. Simple Character Class
A simple character class matches exactly one character from the given set inside square brackets. It is used when you want to allow multiple specific characters at a single position
public class GFG{
public static void main(String[] args){
String regex = "[abc]";
System.out.println("a".matches(regex));
System.out.println("b".matches(regex));
System.out.println("d".matches(regex));
}
}
Output
true true false
Explanation:
- The regex "[abc]" allows only one character, and it must be either a, b, or c, which is why "a" and "b" return true.
- The string "d" does not belong to the defined character set in the regex, so "d".matches(regex) returns false.
2. Range Character Class
Range Character Class matches one character within a specified range using a hyphen (-). It is commonly used to validate digits, lowercase letters, or uppercase letters efficiently.
public class Main {
public static void main(String[] args) {
String regex = "[0-9]";
System.out.println("5".matches(regex));
System.out.println("a".matches(regex));
}
}
Output
true false
Explanation:
- The regex "[0-9]" matches any single digit from 0 to 9, so "5" returns true.
- The character "a" is outside the numeric range, so the match returns false.
3. Multiple Ranges in a Character Class
Multiple Range Character Class allows combining several character ranges in one set. This is useful when validating inputs that can contain letters and digits together.
public class Main {
public static void main(String[] args) {
String regex = "[a-zA-Z0-9]";
System.out.println("A".matches(regex));
System.out.println("7".matches(regex));
System.out.println("@".matches(regex));
}
}
Output
true true false
Explanation:
- The regex "[a-zA-Z0-9]" accepts uppercase letters, lowercase letters, or digits, so "A" and "7" match successfully.
- The character "@" is not included in any specified range, so the match returns false.
4. Negated Character Class
A Negated Character Class is used to match any single character except the ones specified inside the brackets. It is identified by the caret (^) placed at the beginning of the character set.
public class Main {
public static void main(String[] args) {
String regex = "[^0-9]";
System.out.println("a".matches(regex));
System.out.println("5".matches(regex));
}
}
Output
true false
Explanation:
- The regex [^0-9] matches any non-digit character, so "a" returns true.
- The character "5" is a digit and is explicitly excluded, so the match returns false.
5. Predefined Character Classes
Java provides predefined character classes for commonly used patterns.
Regex | Description |
|---|---|
\d | Digit [0-9] |
\D | Non-digit |
\w | Word character [a-zA-Z0-9_] |
\W | Non-word character |
\s | Whitespace (space, tab, newline) |
\S | Non-whitespace |
Quantifiers with Character Classes
Quantifiers are used to specify how many times a character from a defined set or range should appear. They make regex patterns more powerful for validating repeated characters like digits, letters, or symbols.
Quantifier | Meaning | Description | Example |
|---|---|---|---|
* | Zero or more times | Allows any number of occurrences of a character class | [0]*[0-9] |
+ | One or more times | Requires at least one occurrence of a character class | [0]+[0-9] |
? | Zero or one time | Makes a character class optional | [A-Za-z][A-Za-z]-?[0-9][0-9] |
{m} | Exactly m times | Matches a character class exactly m times | [0-9]{3} |
{m,} | At least m times | Matches a character class m or more times | [0-9]{2,} |
{m,n} | At least m and at most n times | Matches a character class between m and n times | [0-9]{2,4} |
Note:
- Quantifiers apply to the preceding regex element or atom, such as a character, character class, or group.
- [0-9]{3} → Matches exactly three digits.
- -? → Matches an optional hyphen (-), meaning zero or one occurrence.