Use regular expressions to check specific string formats in Java

This article details how to use the `String.matches()` method combined with regular expressions in Java to verify whether a string conforms to a specific format, such as the "Alphabetic Alphanumeric" (LLNN) pattern. The article deeply analyzes the composition of regular expressions, provides complete code examples, and discusses exception handling and related considerations, aiming to help developers implement string format verification functions efficiently.
Core concepts: `String.matches()` and regular expressions
In Java, the most powerful and recommended way to perform complex pattern matching and format verification on strings is to use the `String.matches()` method combined with regular expressions (Regular Expression). The `String.matches()` method will try to match the entire string with the given regular expression, returning `true` if there is a complete match, otherwise it will return `false`. This method is particularly suitable for scenarios where strict verification of the entire string format is required.
Building a verification pattern: LLNN example analysis
Suppose the string format we need to verify is "two letters followed by two numbers" (LetterLetterNumberNumber, referred to as LLNN), such as "js34" or "AB12". For this format, we can construct the following regular expression:
^[A-Za-z]{2}\\d{2}$
Let's analyze the various components of this regular expression in detail:
- ^: Matches the beginning of the string. This ensures that the pattern must match from the first character of the string, preventing extra content before the string.
- [A-Za-z]: character set, matches any uppercase letter (AZ) or lowercase letter (az).
- {2}: Quantifier, indicating that the previous element (here `[A-Za-z]`) must appear exactly twice. Therefore, `[A-Za-z]{2}` means two consecutive letters.
- \\d: Matches any numeric character (0-9). It should be noted that in Java string literals, the backslash `\` itself is an escape character, so the `\d` in the regular expression needs to be written as `\\d`.
- {2}: The quantifier appears again, indicating that the previous element (`\\d`) must appear exactly twice. Therefore, `\\d{2}` represents two consecutive numbers.
- $: Matches the end of the string. This ensures that the pattern must end at the last character of the string, preventing extra characters at the end of the string.
Taken together, `^[A-Za-z]{2}\\d{2}$` accurately defines the format of "the string starts with two letters, followed by two numbers, and the string ends here".
Implement string format verification
In Java code, we can apply the above regular expression to the `String.matches()` method and combine it with a custom exception to handle cases where the format is not met. First, we define a custom exception class `FormatException`:
class FormatException extends Exception {
public FormatException() {
super("Incorrect format!"); // Call the parent class constructor and set the default message}
// Normally, if you only need a simple error message, overriding toString() is not necessary.
// Because e.getMessage() will return the message set in super().
// @Override
// public String toString() {
// return "Incorrect format!";
// }
}
Next, in the main program, we can get user input and then verify it using `String.matches()`:
import java.util.Scanner;
public class StringFormatChecker {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String userInput;
System.out.print("Please enter a string (format: alphanumeric, such as js34):");
userInput = scanner.nextLine();
try {
// Verify string format if (!userInput.matches("^[A-Za-z]{2}\\d{2}$")) {
throw new FormatException();
}
System.out.println("Input format is correct: " userInput);
} catch (FormatException e) {
System.err.println("Format error: " e.getMessage());
} finally {
scanner.close(); // Close Scanner to release resources and avoid resource leakage}
}
}
Things to note
- Exception handling: In actual applications, you can choose to throw custom exceptions (such as `FormatException`) according to business needs, or use runtime exceptions such as `IllegalArgumentException` and `PatternSyntaxException` in the Java standard library. Custom exceptions are often used to represent specific business logic error conditions that a program can expect but cannot handle normally.
- Escape of regular expressions: Please remember that when representing regular expressions in Java strings, the backslash `\` needs to be escaped twice, that is, written as `\\`. For example, `\d` represents a number in a regular expression, but must be written as `"\\d"` in a Java string.
- Flexibility of regular expressions: Regular expressions are very powerful and can be flexibly adjusted according to different formatting requirements. For example, if you need to match three letters and two numbers, you can change the pattern to `^[A-Za-z]{3}\\d{2}$`. If numbers or letters are allowed to appear one or more times, you can use quantifiers such as ` ` (one or more times) or ` * ` (zero or more times).
- Performance considerations: For extremely frequent string verification, although regular expressions are usually very efficient, in extremely performance-sensitive scenarios, you can also consider manually traversing characters for verification, but this will greatly increase the code complexity. For most situations, regular expressions are the best choice for concise, efficient string validation.
Summarize
Through the introduction of this article, we have learned how to use Java's `String.matches()` method combined with regular expressions to efficiently and accurately verify whether a string meets specific format requirements. Mastering regular expressions is one of the essential skills for Java developers. It can not only be used for string verification, but can also be widely used in text search, replacement, and extraction scenarios. Proper use of regular expressions can make the code more concise, powerful and easy to maintain, thus improving development efficiency and program robustness.
The above is the detailed content of Use regular expressions to check specific string formats in Java. For more information, please follow other related articles on the PHP Chinese website!
Hot AI Tools
Undress AI Tool
Undress images for free
AI Clothes Remover
Online AI tool for removing clothes from photos.
Undresser.AI Undress
AI-powered app for creating realistic nude photos
ArtGPT
AI image generator for creative art from text prompts.
Stock Market GPT
AI powered investment research for smarter decisions
Hot Article
Popular tool
Notepad++7.3.1
Easy-to-use and free code editor
SublimeText3 Chinese version
Chinese version, very easy to use
Zend Studio 13.0.1
Powerful PHP integrated development environment
Dreamweaver CS6
Visual web development tools
SublimeText3 Mac version
God-level code editing software (SublimeText3)
Hot Topics
20522
7
13634
4
How to configure Spark distributed computing environment in Java_Java big data processing
Mar 09, 2026 pm 08:45 PM
Spark cannot run in local mode, ClassNotFoundException: org.apache.spark.sql.SparkSession. This is the most common first step of getting stuck: even the dependencies are not correct. Only spark-core_2.12 is written in Maven, but spark-sql_2.12 is not added. SparkSession crashes as soon as it is built. The Scala version must strictly match the official Spark compiled version - Spark3.4.x uses Scala2.12 by default. If you use spark-sqljar of 2.13, the class loader cannot directly find the main class. Practical advice: Go to mvnre
How to safely map user-entered weekday string to integer value and implement date offset operation in Java
Mar 09, 2026 pm 09:43 PM
This article introduces a concise and maintainable way to map the weekday string (such as "Monday") to the corresponding serial number (1-7), and use the modulo operation to realize the forward and backward offset of any number of days (such as Monday plus 4 days to get Friday), avoiding lengthy if chains and hard-coded logic.
What is exception masking (Suppressed Exceptions) in Java_Multiple resource shutdown exception handling
Mar 10, 2026 pm 06:57 PM
What is SuppressedException: It is not "swallowed", but actively archived by the JVM. SuppressedException is not an exception loss, but the JVM quietly attaches the secondary exception to the main exception under the premise that "only one exception must be thrown" for you to verify afterwards. It is automatically triggered by the JVM in only two scenarios: one is that the resource closure in try-with-resources fails, and the other is that you manually call addSuppressed() in finally. The key difference is: the former is fully automatic and safe; the latter requires you to keep it to yourself, and it can be written as shadowing if you are not careful. try-
How to use Homebrew to install Java on Mac_A must-have Java tool chain for developers
Mar 09, 2026 pm 09:48 PM
Homebrew installs the latest stable version of openjdk (such as JDK22) by default, not the LTS version; you need to explicitly execute brewinstallopenjdk@17 or brewinstallopenjdk@21 to install the LTS version, and manually configure PATH and JAVA_HOME to be correctly recognized by the system and IDE.
How to correctly implement runtime file writing in Java applications (avoiding JAR internal write failures)
Mar 09, 2026 pm 07:57 PM
After a Java application is packaged as a JAR, data cannot be written directly to the resources in the JAR package (such as test.txt) because the JAR is essentially a read-only ZIP archive; the correct approach is to write variable data to an external path (such as a user directory, a temporary directory, or a configuration-specified path).
What is the underlying principle of array expansion in Java_Java memory dynamic adjustment analysis
Mar 09, 2026 pm 09:45 PM
ArrayList.add() triggers expansion because grow() is called when size is equal to elementData.length. The first add allocates 10 capacity, and subsequent expansion is 1.5 times and not less than the minimum requirement, relying on delayed initialization and System.arraycopy optimization.
Complete tutorial on reading data from file and initializing two-dimensional array in Java
Mar 09, 2026 pm 09:18 PM
This article explains in detail how to load an integer sequence in an external text file into a Java two-dimensional array according to a specified row and column structure (such as 2500×100), avoiding manual assignment or index out-of-bounds, and ensuring accurate data order and robust and reusable code.
A concise method in Java to compare whether four byte values are equal and non-zero
Mar 09, 2026 pm 09:40 PM
This article introduces several professional solutions for efficiently and safely comparing multiple byte type return values (such as getPlayer()) in Java to see if they are all equal and non-zero. We recommend two methods, StreamAPI and logical expansion, to avoid Boolean and byte mis-comparison errors.





