什么是正则表达式?
正则表达式(Regular Expression,简称Regex或RegExp)是一种用于描述字符串匹配模式的强大工具。它使用一套特殊的语法规则,让你可以精确地描述你想匹配的文本模式——从简单的「匹配所有数字」到复杂的「匹配符合特定格式的邮箱地址」。
正则表达式的历史可以追溯到1950年代的正规语言理论,由数学家Stephen Kleene提出。到了1960年代,Ken Thompson将正则表达式引入了Unix的qed编辑器。此后,正则表达式成为了几乎所有编程语言和文本处理工具的标准功能。
正则表达式测试工具功能
实时匹配高亮
输入正则表达式和测试文本后,所有匹配的部分会被高亮显示。你可以直观地看到正则表达式在文本中的匹配效果,快速验证正则是否正确。
标志位支持
支持常用的正则标志位:g(全局匹配)、i(不区分大小写)、m(多行模式)、s(dotAll模式)等。不同的标志位组合会改变匹配行为。
常用正则表达式模式
数字匹配
匹配整数:\d+。匹配浮点数:\d+\.\d+。匹配正整数:[1-9]\d*。匹配手机号:1[3-9]\d{9}。
字符匹配
匹配中文字符:[\u4e00-\u9fa5]+。匹配邮箱地址:[\w.-]+@[\w.-]+\.\w+。匹配URL:https?://[\w.-]+。匹配IP地址:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}。
边界和量词
行首匹配:^。行尾匹配:$。单词边界:\b。零次或多次:*。一次或多次:+。零次或一次:?。指定次数:{n,m}。
常见使用场景
表单验证
前端表单验证是正则表达式最常见的应用场景之一。验证邮箱格式、手机号格式、身份证号格式、密码复杂度等,都可以用正则表达式实现。
数据提取
从大段文本中提取特定格式的数据——比如从日志中提取IP地址、从HTML中提取链接、从文本中提取日期等。正则表达式配合捕获组,可以精确提取你需要的数据。
文本替换
在代码编辑器中使用正则表达式进行批量替换,比手动逐个替换高效得多。
日志分析
在排查问题时,经常需要从大量日志中筛选特定模式的条目。使用正则表达式可以快速定位包含特定IP、错误码、时间范围等的日志条目。
使用教程
步骤一:输入正则表达式
在「正则表达式」输入框中输入你要测试的正则模式。不需要添加斜杠定界符,直接输入模式即可。
步骤二:设置标志位
在「标志位」输入框中输入标志位。常用:g(全局匹配)、i(忽略大小写)、m(多行模式)。
步骤三:输入测试文本
在测试文本区域输入或粘贴你要匹配的文本。匹配到的部分会被高亮显示。
常见问题 FAQ
正则表达式很难学吗?
基础的正则表达式语法并不复杂,掌握常用的元字符就能解决大部分问题。复杂的正则需要多练习,但借助在线测试工具,调试过程会轻松很多。
为什么匹配不到中文?
确保使用 [\u4e00-\u9fa5] 来匹配中文字符。注意JavaScript中正则表达式的Unicode支持取决于标志位,复杂情况可能需要使用 u 标志。
贪婪模式和惰性模式有什么区别?
贪婪模式(默认)会尽可能多地匹配字符。惰性模式(量词后加?)会尽可能少地匹配。在本工具中切换这两种模式可以直观看到区别。