Blog
  • README
  • Daily-life
    • 关于简历
    • 如何做好劳逸结合
    • 探索历程
    • 如何走出个人舒适圈
    • 怎样提升领导能力
    • 个人装换机之 Windows 系列
    • 工作之余 - 技能修炼
    • Search: 业余的专业搜索技能
    • 自我迭代
    • 优秀的自我介绍很重要
    • 工作心得
  • Checklist
    • 开发自检清单
    • 代码教鞭:不值得犯第二次的错
  • Docs
    • Bash: 入门重点
    • CSS 特殊用法
    • ChatGPT 使用总结
    • Console
    • Corn 表达式
    • DOS command
    • Emoji: 供日常学习、查询及使用
    • Git 命令集
    • GitBook
    • Github Action
    • Github
    • HTTP: 小知识巧总结
    • JS 精选
    • Jest learning manual
    • License: 解说
    • Mac
    • Markdown
    • 小程序
    • NPM and Plugin Guide
    • 渐进式 Web 应用(PWA)
    • Regexp
    • Rollup
    • SEO
    • SQL
    • 专业名词
    • Testing
    • TypeScript
    • Vue - fragment knowledge
    • Web API
    • 站点:那些可以经常逛逛的开发工具网站
    • Webpack
    • Windows 之路遇精彩
  • Project
    • README 模板:Project Name
    • 借鉴-项目规范
  • React
    • Antd typescript
    • React: 总结整理
    • React Hook - 速览
    • React-生命周期方法转 Hooks-1
    • React: 生命周期方法转 Hooks-2
    • Redux
    • React router
    • useEffect
  • Share
    • StartToGit
    • 3步自动同步你的 Github 仓库到 Gitee 仓库
    • 软考高级“信息系统项目管理师”考试忠告
    • 轻松使用WebWorker,解放耗时较大的算法代码
  • Tool
    • 最好的工具: 理解并使用那些耳目一新的巧工具
    • IntelliJ IDEA
    • VS Code:发挥应有的效率
  • Office
    • Excel 常用操作
    • Word: 文档操作精选技巧
由 GitBook 提供支持
在本页
  • 基础
  • 元字符
  • 分组与引用
  • 匹配模式
  • Special point
  • Online regex tester and debugger
  • Collection of expression: 日常表达式

这有帮助吗?

  1. Docs

Regexp

基础

元字符

  • 特殊单字符:

    • .(任意非换行字符)

    • \d(任意数字)

    • \D(任意非数字)

    • \w(任意字母数字下划线)

    • \W(任意非字母数字下划线)

    • \s(任意空格)

    • \S (任意非空格)

  • 空白符

不同的系统在每行文本结束位置默认的“换行”会有区别。比如在 Windows 里是 \r\n,在 Linux 和 MacOS 中是

  • \r 回车符

  • \n 换行符

  • \f 换页符

  • \t 制表符

  • \v 垂直制表符

  • \s 任意空白符

  • 范围

    • | 或

    • [...] 多选一,括号中任意单个字符

    • [a-z] 匹配 a 到 z 任意字符,包含 a,z

    • [^...] 取反 不能是括号内的任意字符

  • 量词

      • 任意次,0次或多次

      • 1次或多次

    • ?0次或1次

    • {m} m 次

    • {m+} 至少 m 次

    • {m, n} m 到 n次

  • 断言

分组与引用

  • 分组与编号:一对括号是一个分组;从左至右数左括号,第一个左括号对应等分组编号默认是1,向右依次类推 2,3,4...

  • 不保存子组:在分组括号内最左加 ?:

  • 括号嵌套:分组编号依然按照左括号对应的索引1,2,3;

  • 命名分组:在分组括号内最左加 ?P<分组名>

  • 分组引用:表达式中一般 \1 \2 \3,替换表达式时,Java/JavaScript 中是使用 $1 $2,其他语言仍为:\1 \2

匹配模式

  • 不区分大小写:(?i)

  • 点号通配模式:(?s) javascript 不支持,可以使用[\d\D] [\w\W] [\s\S] 代替

  • 多行模式:(?m) , ^ 匹配任意行开始,$ 匹配任意行结尾

  • 注释模式:(?#comment), (\w+) \1(?#word repeat again)

Special point

  • 点(.)是匹配“任何字符”,

    • 点 . 是一种特殊字符类,它与 “除换行符之外的任何字符” 匹配。

      let regexp = /CS.4/;
      
      alert( "CSS4".match(regexp) ); // CSS4
      alert( "CS-4".match(regexp) ); // CS-4
      alert( "CS 4".match(regexp) ); // CS 4 (space is also a character)
    • alert( "A\nB".match(/A.B/) ); // null (no match)
      alert( "A\nB".match(/A.B/s) ); // A\nB (match!)
  • 匹配“任何字符”

    • [.]/s, 有兼容性问题;

    • [\s\S]

    • [\d\D]

    • [^]

  • 量词

量词有两种工作模式:

贪婪模式

默认情况下,正则表达式引擎会尝试尽可能多地重复量词。例如,\d+ 检测所有可能的字符。当不可能检测更多(没有更多的字符或到达字符串末尾)时,然后它再匹配模式的剩余部分。如果没有匹配,则减少重复的次数(回溯),并再次尝试。 懒惰模式

通过在量词后添加问号 ? 来启用。在每次重复量词之前,引擎会尝试去匹配模式的剩余部分。 正如我们所见,懒惰模式并不是针对贪婪搜索的灵丹妙药。另一种方式是“微调”贪婪搜索,我们很快就会见到更多的例子。

Online regex tester and debugger

  • Windows 上推荐:RegexBuddy

  • Mac上推荐:Expressions

Collection of expression: 日常表达式

  • Webpack tester the folder and file suffix

    /^.+js\/folder(\/|.*?)[^\/]+?\.js$/g

    16进制色值校验

    ^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$
上一页渐进式 Web 应用(PWA)下一页Rollup

最后更新于3年前

这有帮助吗?

带有“s”标志时点字符类严格匹配任何字符,使用前注意查看

: PHP, PCRE, Python, Golang and JavaScript

Tested in

浏览器兼容性
regex101
oschina
chinaz
w3cschool
runoob
haokh
regexp101