无需登录 数据私有 本地保存

正则表达式在线测试工具 - JavaScript正则校验

46
0
0
0

正则表达式在线测试工具

JavaScript RegExp 实时校验 · 匹配高亮 · 捕获组分析

就绪
/ /
测试文本
匹配结果
等待输入正则表达式...
匹配详情

匹配详情将在此显示,包括捕获组信息。

替换功能

正则表达式常见问题与知识点

正则表达式(Regular Expression,简称Regex)是一种用于描述字符串匹配模式的强大工具。它由一系列字符和特殊符号组成,用于在文本中搜索、匹配、替换符合特定规则的字符串。JavaScript中通过RegExp对象或字面量/pattern/flags来使用正则表达式。常见的应用包括表单验证、数据提取、日志分析等。

  • g (global):全局匹配,查找所有匹配项,而非在第一个匹配后停止。
  • i (ignoreCase):忽略大小写,匹配时不区分字母大小写。
  • m (multiline):多行模式,使^$匹配每行的开头和结尾,而不仅是整个字符串的开头和结尾。
  • s (dotAll):使.(点)匹配包括换行符\n在内的所有字符。
  • u (unicode):启用Unicode模式,正确处理Unicode字符(如emoji、中文等),支持\u{...}语法。

捕获组使用括号(...)定义,用于提取匹配中的子部分。例如正则(\d{3})-(\d{4})匹配"010-8888"时,$1代表"010",$2代表"8888"。在JavaScript的replace()方法中可以使用$1$2等来引用捕获组。非捕获组使用(?:...)语法,只做分组不捕获,可提升性能。

邮箱正则^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$的匹配逻辑:^表示开始,[a-zA-Z0-9._%+\-]+匹配用户名部分(字母数字及特殊字符),@匹配@符号,[a-zA-Z0-9.\-]+匹配域名,\.匹配点号,[a-zA-Z]{2,}匹配顶级域名(至少2个字母),$表示结束。该正则可匹配绝大多数标准邮箱格式。

  • 避免灾难性回溯:慎用嵌套量词(如(a+)+b),可能导致指数级回溯。
  • 使用非贪婪匹配:在量词后加?(如.*?),避免过度匹配。
  • 优先使用字符类[abc](a|b|c)更高效。
  • 善用锚点:使用^$限定位置,减少不必要的扫描。
  • 预编译正则:在循环外创建RegExp对象,避免重复编译。

  • test():RegExp方法,返回布尔值,判断是否有匹配。
  • exec():RegExp方法,返回匹配详情数组(含捕获组和index),每次返回一个匹配(与g标志配合使用可遍历所有匹配)。
  • match():String方法,无g标志时返回首个匹配详情(含捕获组);有g标志时返回所有完整匹配的数组(不含捕获组)。
  • matchAll():String方法(ES2020),返回迭代器,可获取所有匹配的完整信息(含捕获组),推荐用于需要捕获组的全局匹配场景。