在线正则表达式测试工具
常用正则表达式模板
正则表达式
/
/
测试文本
匹配结果
没有找到匹配项
正则表达式指南

什么是正则表达式?

正则表达式(Regular Expression,简称regex)是一种用于匹配字符串中字符组合的模式。在程序设计中,正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 许多程序设计语言都支持利用正则表达式进行字符串操作。

正则表达式基础语法

元字符描述
.匹配除换行符外的任意字符
^匹配字符串的开始
$匹配字符串的结束
*匹配前面的子表达式零次或多次
+匹配前面的子表达式一次或多次
?匹配前面的子表达式零次或一次
{n}匹配确定的 n 次
{n,}至少匹配 n 次
{n,m}匹配 n 到 m 次
\转义字符
[]字符类,匹配方括号中的任意字符
|或运算符,匹配符号前或后的字符
()分组,可以捕获匹配的内容
\d匹配一个数字字符,等价于 [0-9]
\D匹配一个非数字字符,等价于 [^0-9]
\w匹配字母、数字、下划线,等价于 [A-Za-z0-9_]
\W匹配非字母、数字、下划线,等价于 [^A-Za-z0-9_]
\s匹配任何空白字符
\S匹配任何非空白字符

正则表达式标志(Flags)

标志描述
g全局匹配 - 查找所有匹配项,而不是在第一个匹配后停止
i忽略大小写 - 不区分大小写进行匹配
m多行匹配 - 将开始和结束字符(^和$)视为在多行上工作
sdotAll模式 - 允许.匹配任何字符,包括换行符
uUnicode模式 - 将模式视为Unicode序列点的序列
y粘性匹配 - 仅从目标字符串中的当前位置开始匹配

正则表达式在编程中的应用

正则表达式在各种编程语言中都有广泛应用,包括JavaScript、Python、Java、PHP等。它们通常用于以下场景:

  • 表单验证 - 验证用户输入的电子邮件、电话号码、密码等是否符合特定格式
  • 数据提取 - 从文本中提取特定格式的信息,如日期、URL、电子邮件地址等
  • 字符串替换 - 查找并替换文本中的特定模式
  • 文本解析 - 解析日志文件、配置文件或其他结构化文本
  • 语法高亮 - 在代码编辑器中实现语法高亮功能

正则表达式优化技巧

编写高效的正则表达式可以提高程序性能,以下是一些优化技巧:

  • 避免过度使用贪婪匹配(如 *、+ 等),可以使用非贪婪版本(如 *?、+? 等)
  • 尽量使用更具体的字符类,而不是通配符
  • 避免使用过多的回溯,如嵌套的重复量词
  • 对于简单的字符串匹配,考虑使用字符串方法而不是正则表达式
  • 使用原子组(?>...)和占有量词(如 *+、++ 等)减少回溯
  • 预编译经常使用的正则表达式,避免重复编译

常见正则表达式错误

在使用正则表达式时,常见的错误包括:

  • 忘记转义特殊字符,如 .、*、+、? 等
  • 过度使用贪婪匹配,导致匹配结果不符合预期
  • 正则表达式过于复杂,难以维护和理解
  • 未考虑边界情况,如空字符串或特殊字符
  • 使用不适当的量词,导致性能问题