正则表达式工具
在线正则表达式测试与可视化,支持分组高亮、选项切换和结构图。
/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
}