正则表达式入门及常用的正则表达式

发布于:2025-03-14 ⋅ 阅读:(16) ⋅ 点赞:(0)

正则表达式(Regular Expression,简称 Regex)是一种强大的文本处理工具,用于匹配、查找和替换字符串中的特定模式。以下是入门指南和常用正则表达式示例:


一、正则表达式入门

1. 基本语法
符号 说明 示例
. 匹配任意单个字符(除换行符) a.c → “abc”、“a1c”
\d 匹配数字(等价于 [0-9] \d\d → “12”、“99”
\w 匹配字母、数字、下划线 \w+ → “hello_123”
\s 匹配空白字符(空格、制表符等) \s+ → 匹配连续空格
^ 匹配字符串开头 ^abc → 以 “abc” 开头
$ 匹配字符串结尾 xyz$ → 以 “xyz” 结尾
^ / $ 字符串开始 / 结束 ^start / end$
[abc] 匹配括号内的任意字符 [aeiou] → 匹配元音字母
[^abc] 匹配不在括号内的任意字符 [^0-9] → 非数字字符
2. 量词
符号 说明 示例
* 匹配前一个元素0次或多次 a* → “”, “a”, “aaaa”
* / + 匹配前一个元素 0次+/1次+(贪婪匹配) a+ → “a”, “aaa”
? 匹配前一个元素0次或1次 colou?r → “color”, “colour”
{n} 匹配前一个元素恰好n次 \d{4} → 4位数字(如年份)
{n,m} 匹配前一个元素n到m次 \d{3,5} → 3到5位数字
3. 分组与逻辑
符号 说明 示例
(abc) 分组,捕获匹配的内容 (ab)+ → “abab”
` ` 逻辑“或”
(?:abc) 非捕获分组(不保存匹配) `(?:http

二、常用正则表达式示例

1. 邮箱验证

  • 正则表达式

    ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
    
  • Java 代码:

    import java.util.regex.Pattern;
    public class EmailValidator {
        private static final String EMAIL_REGEX = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$";
        
        public static boolean validateEmail(String email) {
            return Pattern.matches(EMAIL_REGEX, email);
        }
    }
    

2. 手机号(中国大陆)

  • 正则表达式

    ^1[3-9]\d{9}$
    
  • Java 代码:

    public class PhoneValidator {
        private static final String PHONE_REGEX = "^1[3-9]\\d{9}$";
        
        public static boolean validatePhone(String phone) {
            return Pattern.matches(PHONE_REGEX, phone);
        }
    }
    

3. 日期(YYYY-MM-DD)

  • 正则表达式

    ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
    
  • Java 代码:

    public class DateValidator {
        private static final String DATE_REGEX = "^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$";
        
        public static boolean validateDate(String date) {
            return Pattern.matches(DATE_REGEX, date);
        }
    }
    


4. 时间(HH:MM:SS)

  • 正则表达式

    ^([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$
    
  • Java 代码:

    public class TimeValidator {
        private static final String TIME_REGEX = "^([01]\d|2[0-3]):([0-5]\d):([0-5]\d)$";
        
        public static boolean validateTime(String time) {
            return Pattern.matches(TIME_REGEX, time);
        }
    }
    

5. 提取URL中的域名

  • 正则表达式

    ^(https?|ftp)://([^/:]+)(:\d+)?(/.*)?$
    
  • Java 代码:

    public class UrlParser {
        private static final String URL_REGEX = "^(https?|ftp)://([^/:]+)(:\\d+)?(/.*)?$";
        
        public static String extractDomain(String url) {
            Pattern pattern = Pattern.compile(URL_REGEX);
            Matcher matcher = pattern.matcher(url);
            return matcher.find() ? matcher.group(2) : null;
        }
    }
    

6.中文汉字

  • 正则表达式

    ^[\u4e00-\u9fa5]+$  # 匹配纯中文字符
    
  • Java 代码:

    public class ChineseValidator {
        private static final String CHINESE_REGEX = "^[\u4e00-\u9fa5]+$";
        
        public static String extractChinese(String str) {
          Pattern pattern = Pattern.compile(CHINESE_REGEX);
          Matcher matcher = pattern.matcher(str);
          return matcher.find() ? matcher.group() : null;
      }
    }
    

7.IP地址(IPv4)

  • 正则表达式

    ^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$
    
  • Java 代码:

    public class IPValidator{
        private static final String IP_REGEX = "^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$";
        
      public static String validateIp(String str) {
          Pattern pattern = Pattern.compile(IP_REGEX);
          Matcher matcher = pattern.matcher(str);
          return matcher.find() ? matcher.group(): null;
      }
    }
    

8.密码长度(至少8位,包含字母和数字)

  • 正则表达式

     ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
    
  • Java 代码:

    public class PasswordLenValidator{
        private static final String IP_REGEX = "^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$";
        
      public static String validateIp(String str) {
          Pattern pattern = Pattern.compile(IP_REGEX);
          Matcher matcher = pattern.matcher(str);
          return matcher.find() ? matcher.group(): null;
      }
    }
    

三、正则表达式练习工具



网站公告

今日签到

点亮在社区的每一天
去签到