当前位置: 首页 > article >正文

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

正则表达式(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;
      }
    }
    

三、正则表达式练习工具

  • Regex101:https://regex101.com
    • 支持多语言(Python、Java、JavaScript等),提供语法高亮和解释。
  • RegExr:https://regexr.com
    • 实时匹配测试,适合快速验证模式。
  • Debuggex:https://www.debuggex.com
    • 可视化正则表达式执行流程。


http://www.kler.cn/a/585370.html

相关文章:

  • 封装WPF中转换器常用用法封装
  • 在PowerShell脚本中编辑appsettings.json
  • Qt QML实现鼠标自由选择不规则区域进行截图
  • Quickwit+Jaeger+Prometheus+Grafana搭建Java日志管理平台
  • 大数据学习(68)- Flink和Spark Streaming
  • [c语言日寄]字符串进阶:KMP算法
  • 使用Python编写网络爬虫:从入门到实践
  • 【Rust】枚举和模式匹配——Rust语言基础14
  • 【软设中级】软件设计师中级专题复习:(专题二)程序语言部分
  • 10个数据收集相关DeepSeek提示词
  • Github 2025-03-14 Java开源项目日报 Top10
  • python 基于混合式推荐算法的学术论文投稿系统
  • QT 学习一 paintEvent,QPainter ,QImage
  • 使用Python和OpenCV进行计算机视觉处理
  • 程序化广告行业(15/89):TD、流量供应方与流量方服务解析
  • 电机控制常见面试问题(十二)
  • 62.Harmonyos NEXT 图片预览组件之工具类实现
  • 鸿蒙 @ohos.arkui.node
  • 使用位运算实现加法、减法、乘法和除法
  • Ray|RLLib|Tune学习笔记