正则表达式工具
在线正则表达式测试与可视化,支持分组高亮、选项切换和结构图。
/g
正则语法介绍
- .:匹配除换行符外的任意字符
- \d:匹配一个数字,等价于[0-9]
- \w:匹配字母、数字或下划线,等价于[A-Za-z0-9_]
- \s:匹配任意空白字符(空格、Tab等)
- ^:匹配输入的开始
- $:匹配输入的结束
- *:匹配前面的子表达式零次或多次
- +:匹配前面的子表达式一次或多次
- ?:匹配前面的子表达式零次或一次
- {n,m}:匹配前面的子表达式至少n次,至多m次
- [abc]:匹配a、b或c中的任意一个字符
- (...):分组,捕获括号内的内容
- |:或,匹配符号两边任意一个表达式
- \\:转义字符,用于匹配特殊字符本身
常用修饰符
- g:全局匹配
- i:忽略大小写
- m:多行匹配
- s:让 . 匹配换行符
常用正则表达式
用途 | 正则表达式 | 说明 |
---|---|---|
邮箱 | ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ | 匹配常见邮箱地址 |
手机号 | ^1[3-9]\d{9}$ | 中国大陆手机号 |
IPv4地址 | ^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}$ | 匹配IPv4 |
URL | ^((https?|ftp):\/\/)?([\w.-]+)\.([a-zA-Z]{2,6})(:[0-9]{1,5})?(\/.*)?$ | 匹配网址 |
身份证号 | ^(\d{15}|\d{18}|\d{17}[Xx])$ | 中国身份证号 |
邮政编码 | ^\d{6}$ | 中国邮编 |
日期(YYYY-MM-DD) | ^\d{4}-\d{1,2}-\d{1,2}$ | 简单日期格式 |
中文 | ^[\u4e00-\u9fa5]+$ | 仅中文字符 |
数字 | ^\d+$ | 仅数字 |
字母 | ^[A-Za-z]+$ | 仅英文字母 |
字母数字 | ^[A-Za-z0-9]+$ | 字母和数字组合 |
HTML标签 | <[^>]+> | 匹配HTML标签 |
去除空白 | \s+ | 匹配所有空白字符 |
密码强度(6-16位,字母数字符号) | ^[A-Za-z0-9!@#$%^&*()_+\-={}[]:;"'<>,.?/]{6,16}$ | 常见密码规则 |
各语言正则表达式用法示例
JavaScript
// 创建一个匹配3位及以上数字的正则,g为全局匹配 const regex = /\d{3,}/g; // 待匹配字符串 const str = 'abc123def456'; // 获取所有匹配项 const matches = str.match(regex); console.log(matches); // ["123", "456"]
Python
# 导入正则模块 import re # 定义正则表达式,匹配3位及以上数字 pattern = r"\\d{3,}" # 待匹配字符串 text = "abc123def456" # 查找所有匹配项 matches = re.findall(pattern, text) print(matches) # ['123', '456']
Java
// 导入正则相关类 import java.util.regex.*; // 待匹配字符串 String text = "abc123def456"; // 创建正则表达式对象,匹配3位及以上数字 Pattern pattern = Pattern.compile("\\d{3,}"); // 创建匹配器 Matcher matcher = pattern.matcher(text); // 遍历所有匹配项 while (matcher.find()) { System.out.println(matcher.group()); // 123, 456 }
C#
// 引入正则命名空间 using System.Text.RegularExpressions; // 待匹配字符串 string text = "abc123def456"; // 获取所有匹配项 var matches = Regex.Matches(text, "\\d{3,}"); foreach (Match match in matches) { Console.WriteLine(match.Value); // 123, 456 }