Introduction
The matches()
method in Java is a powerful tool for validating strings against regular expressions. It checks if the entire input string conforms to the pattern defined by the regex.
Syntax
public boolean matches(String regex)
Parameters
Parameter | Description |
---|---|
regex |
The regular expression to which the string is matched. |
Return Value
This method returns true
if the entire sequence of characters in the input string matches the given regular expression; otherwise, it returns false
.
Examples
Example 1: Basic Pattern Matching
Let's start with a simple example. This example demonstrates how to check if a string consists only of digits using the regex "\d+
".
public class MatchesExample1 {
public static void main(String[] args) {
String str1 = "12345";
String str2 = "abc123";
System.out.println("" + str1 + " matches: " + str1.matches("\d+")); // Matches only digits
System.out.println("" + str2 + " matches: " + str2.matches("\d+"));
}
}
12345 matches: true
abc123 matches: false
In this example, str1
contains only digits, so it successfully matches the regex. str2
contains both letters and numbers, failing the match.
Example 2: Matching a Specific Format (Email)
This example shows how to validate an email address using a simplified regular expression for emails.
public class MatchesExample2 {
public static void main(String[] args) {
String email1 = "test@example.com";
String email2 = "invalid-email";
System.out.println("" + email1 + " matches: " + email1.matches("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"));
System.out.println("" + email2 + " matches: " + email2.matches("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}"));
}
}
test@example.com matches: true
invalid-email matches: false
The regex [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
is a simplified pattern for emails. It's important to note that a truly robust email validation requires a much more complex regular expression, as the rules are quite intricate.
Example 3: Using Character Classes
This example uses character classes to match strings containing only lowercase letters.
public class MatchesExample3 {
public static void main(String[] args) {
String str1 = "lowercase";
String str2 = "MixedCase";
System.out.println("" + str1 + " matches: " + str1.matches("[a-z]++"));
System.out.println("" + str2 + " matches: " + str2.matches("[a-z]++"));
}
}
lowercase matches: true
MixedCase matches: false
The regex [a-z]+
specifies that the string must contain only lowercase letters. Therefore, "lowercase" matches, while "MixedCase" does not.
Example 4: Matching with Quantifiers
This example uses quantifiers to match strings that start with one or more digits followed by some characters.
public class MatchesExample4 {
public static void main(String[] args) {
String str1 = "123abc";
String str2 = "abc";
System.out.println("" + str1 + " matches: " + str1.matches("\d+.*+"));
System.out.println("" + str2 + " matches: " + str2.matches("\d+.*+"));
}
}
123abc matches: true
abc matches: false
The regex \d+.∗+
requires at least one digit (\d+
) followed by any characters (.∗+
). Thus, “123abc” successfully matches because it starts with digits.