欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > 正则表达式入门及常用的正则表达式

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

2025/3/15 16:49:35 来源:https://blog.csdn.net/zrhsmile/article/details/146230964  浏览:    关键词:正则表达式入门及常用的正则表达式

正则表达式(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
    • 可视化正则表达式执行流程。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词