Skip to content

正则的常用方法

常见正则表达式示例

邮箱验证

java
String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";

手机号验证

java
String regex = "^1[3-9]\\d{9}$";

身份证号验证

java
String regex = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$";

密码强度验证(至少包含大小写字母、数字和特殊字符,长度8-20位)

java
String regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&])[A-Za-z\\d@$!%*?&]{8,20}$";

URL验证

java
String regex = "^(https?|ftp):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?$";

IP地址验证

java
String regex = "^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$";

日期格式验证(yyyy-MM-dd)

java
String regex = "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$";

时间格式验证(HH:mm:ss)

java
String regex = "^([01]?\\d|2[0-3]):[0-5]\\d:[0-5]\\d$";

正则表达式的常用方法

字符串匹配

示例:验证邮箱格式

java
import java.util.regex.Pattern;

public class EmailValidationExample {
    public static void main(String[] args) {
        String email = "test@example.com";
        String regex = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
        
        // 使用Pattern.matches()方法
        boolean isValid = Pattern.matches(regex, email);
        System.out.println("邮箱是否有效: " + isValid);
        
        // 使用Pattern和Matcher类
        Pattern pattern = Pattern.compile(regex);
        boolean isValid2 = pattern.matcher(email).matches();
        System.out.println("邮箱是否有效: " + isValid2);
    }
}

示例:验证手机号格式

java
import java.util.regex.Pattern;

public class PhoneValidationExample {
    public static void main(String[] args) {
        String phone = "13812345678";
        String regex = "^1[3-9]\\d{9}$";
        
        boolean isValid = Pattern.matches(regex, phone);
        System.out.println("手机号是否有效: " + isValid);
    }
}

字符串查找

示例:查找所有数字

java
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FindNumbersExample {
    public static void main(String[] args) {
        String text = "Hello 123 World 456 Java 789";
        String regex = "\\d+";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        
        while (matcher.find()) {
            String number = matcher.group();
            int start = matcher.start();
            int end = matcher.end();
            System.out.println("找到数字: " + number + ",位置: " + start + "-" + end);
        }
    }
}

示例:查找所有单词

java
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class FindWordsExample {
    public static void main(String[] args) {
        String text = "Hello, World! Java is awesome.";
        String regex = "\\w+";
        
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(text);
        
        while (matcher.find()) {
            String word = matcher.group();
            System.out.println("找到单词: " + word);
        }
    }
}

字符串替换

示例:替换所有数字

java
import java.util.regex.Pattern;

public class ReplaceNumbersExample {
    public static void main(String[] args) {
        String text = "Hello 123 World 456 Java 789";
        String regex = "\\d+";
        String replacement = "***";
        
        // 使用String.replaceAll()方法
        String result1 = text.replaceAll(regex, replacement);
        System.out.println("替换结果1: " + result1);
        
        // 使用Pattern和Matcher类
        Pattern pattern = Pattern.compile(regex);
        String result2 = pattern.matcher(text).replaceAll(replacement);
        System.out.println("替换结果2: " + result2);
    }
}

示例:替换第一个数字

java
import java.util.regex.Pattern;

public class ReplaceFirstNumberExample {
    public static void main(String[] args) {
        String text = "Hello 123 World 456 Java 789";
        String regex = "\\d+";
        String replacement = "***";
        
        // 使用String.replaceFirst()方法
        String result1 = text.replaceFirst(regex, replacement);
        System.out.println("替换结果1: " + result1);
        
        // 使用Pattern和Matcher类
        Pattern pattern = Pattern.compile(regex);
        String result2 = pattern.matcher(text).replaceFirst(replacement);
        System.out.println("替换结果2: " + result2);
    }
}

字符串分割

示例:根据空白字符分割字符串

java
import java.util.regex.Pattern;

public class SplitStringExample {
    public static void main(String[] args) {
        String text = "Hello   World  Java";
        String regex = "\\s+";
        
        // 使用String.split()方法
        String[] result1 = text.split(regex);
        System.out.println("分割结果1: ");
        for (String s : result1) {
            System.out.println(s);
        }
        
        // 使用Pattern.split()方法
        Pattern pattern = Pattern.compile(regex);
        String[] result2 = pattern.split(text);
        System.out.println("分割结果2: ");
        for (String s : result2) {
            System.out.println(s);
        }
    }
}

示例:根据逗号分割字符串

java
import java.util.regex.Pattern;

public class SplitByCommaExample {
    public static void main(String[] args) {
        String text = "apple,banana,orange,grape";
        String regex = ",";
        
        String[] result = text.split(regex);
        System.out.println("分割结果: ");
        for (String s : result) {
            System.out.println(s);
        }
    }
}