正则表达式是什么:概念、原理与常见用途

38 0

正则表达式(Regular Expression,简称 regex)是用一串特殊字符描述文本模式的规则,用于查找、提取、校验和替换文本。下面重点说明概念、原理与常见用途。

正则表达式是什么

正则表达式(Regular Expression,简称 regex)是用一串特殊字符描述文本模式的规则,用于查找、提取、校验和替换文本。例如 ^1[3-9]\d{9}$ 描述大陆 11 位手机号。几乎所有编程语言和文本编辑器都支持正则,但各自的语法细节略有差异。

  • . 任意字符(默认不含换行),\d 数字,\w 字母数字下划线,\s 空白
  • * 0 次或多次,+ 1 次或多次,? 0 或 1 次,{m,n} m 到 n 次
  • ^ 开头,$ 结尾,\b 单词边界

示例

输入:正则 ^[\w.+-]+@[\w-]+(?:\.[\w-]+)+$,文本“user@example.com”

匹配结果:“user@example.com”

说明:邮箱(简化版)。

工作原理

正则引擎把表达式编译成状态机,从文本左侧开始逐个位置尝试匹配;遇到量词时先尽量多匹配(贪婪),失败再回溯。多数语言使用回溯引擎(PCRE、JavaScript、Python、Java),复杂嵌套量词可能导致回溯爆炸;Go 和 RE2 使用线性时间引擎,不支持反向引用。

规则说明

  • 特殊字符 . * + ? ^ $ ( ) [ ] { } | \ 需要用 \ 转义
  • 分组 ( ) 会捕获内容,(?: ) 只分组不捕获
  • (?<name> ) 命名分组,\1 反向引用
  • (?= ) 正向先行断言,(?! ) 负向先行断言,(?<= ) 后行断言
  • 在字符串字面量中写正则时,反斜杠可能需要写两次

本站的正则表达式测试工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。

常见问题

【正则怎么匹配中文?】用 [\u4e00-\u9fff] 匹配常用汉字;需要包括扩展区时用 \p{Script=Han}(JavaScript 需 u 标志)。

【贪婪和非贪婪有什么区别?】贪婪(.*)尽量多匹配,非贪婪(.*?)尽量少匹配。

【为什么校验总是通过?】可能没有加 ^ 和 $,只要文本中包含符合的部分就会通过。

文中示例可以在本站对应工具中验证;处理密码、证件号等敏感数据时,请注意保护隐私。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: 正则 正则表达式

抱歉,评论功能暂时关闭!