找出邮箱地址
一封客服来信里有两个邮箱地址。
- 表达式:\b[\w.+-]+@[\w-]+\.[\w.]+\b
- 标志:g
- 结果:ada@example.com 和 grace@example.org
每处匹配都会标出起始位置;表达式里带括号时,还会同时显示捕获组的内容。
这个工具用 JavaScript 正则表达式匹配你输入的文本,列出每一处匹配、它在文本中的位置以及捕获组的内容。所有计算都在浏览器里完成,文本不会上传。
所有数据都在你的浏览器本地处理,不会上传到我们的服务器。
表达式无效:
new RegExp(pattern, flags).exec(text)
表达式由浏览器的 JavaScript 引擎编译。不加 g 标志时只返回第一处匹配;加上 g 之后,工具会一直匹配到文本末尾。
g global · i ignore case · m multiline · s dotAll · u unicode · y sticky
标志决定引擎如何解释表达式。工具把它们原样传给 RegExp 构造函数,语法错误则显示引擎给出的原始信息。
一封客服来信里有两个邮箱地址。
每处匹配都会标出起始位置;表达式里带括号时,还会同时显示捕获组的内容。
从 ISO 日期里取出年、月、日。
括号里的部分按出现顺序作为捕获组返回,可以直接取用,不必再切分字符串。
(a+)+ 这类嵌套量词会让引擎在某些输入上呈指数级耗时(catastrophic backtracking)。页面一旦卡住,请简化表达式;正在运行的正则无法被工具中断。
^ 或 \b 这样的表达式可以匹配空字符串。遇到空匹配时,工具会把搜索位置向后移动一位,避免陷入死循环。
工具使用 JavaScript 的 RegExp 语法,而不是 PCRE 或 Python 语法。后行断言和具名分组只在实现了它们的引擎中可用。
要找出全部匹配,需要勾选 g(global)标志;不勾选时,工具在第一个结果之后就停止。
表达式里每一对括号都会捕获一段文本。捕获组按左括号出现的顺序从 1 开始编号,显示在匹配结果旁边;没有参与匹配的可选组显示为 ∅。
不会。匹配使用的是浏览器自带的 RegExp 引擎,不会向服务器发送任何内容。
嵌套量词和有歧义的择一会引发灾难性回溯。可以把表达式写得更具体,或用锚点限制搜索范围。
引擎接受现代 JavaScript 语法,浏览器支持时具名分组即可使用。结果列表按编号显示捕获组。