ref
这个工具还是得找个机会熟悉起来,用的机会太少了,但感觉很有必要。
- 正则表达式 - 教程 菜鸟教程
- 正则表达式30分钟入门教程
- 正则表达式(RegEx)——快速参考
- 正则表达式 - 元字符
- Regular Expression Language - Quick Reference
- 正则表达式 知乎
- 最实用的正则表达式整理
- 《JavaScript 正则表达式迷你书》问世了!
- 学习正则表达式有哪些入门和进阶的书籍? 知乎
- 正则表达式系列总结
- 你是如何学会正则表达式的?
正则表达式示例
- 正则表达式 - 示例 菜鸟教程
- 正则表达式在线测试 菜鸟教程
- 常用正则表达式 jb51
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- 知道这20个正则表达式,能让你少写1,000行代码
测试工具
- regular epressions 101 在线测试工具
- Regexper 正则表达式可视化工具
- Regester 正则表达式测试工具
相关介绍
基本概念
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为”元字符”)。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
为什么使用
典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。
通过使用正则表达式,可以:
- 测试字符串内的模式。
例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。 - 替换文本。
可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。 - 基于模式匹配从字符串中提取子字符串。
可以查找文档内或输入域内特定的文本。
基本语法
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为”元字符”)组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
- 普通字符
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号。 - 特殊字符
所谓特殊字符,就是一些有特殊含义的字符,许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符”转义”,即,将反斜杠字符\ 放在它们前面。 限定符
用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有*
或+
或?
或{n}
或{n,}
或{n,m}
共6种。定位符
使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。定位符用来描述字符串或单词的边界,
^
和$
分别指字符串的开始与结束,\b
描述单词的前或后边界,\B
表示非单词边界。选择
用圆括号将所有选择项括起来,相邻的选择项之间用|分隔。反向引用
对一个正则表达式模式或部分模式两边添加圆括号将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。缓冲区编号从1开始,最多可存储99个捕获的子表达式。每个缓冲区都可以使用\n
访问,其中n
为一个标识特定缓冲区的一位或两位十进制数。
常用的元字符
字符 | 描述 |
---|---|
x|y | 匹配 x 或 y。例如,’z|food’ 能匹配 “z” 或 “food”。’(z|f)ood’ 则匹配 “zood” 或 “food”。 |
\b | 匹配一个单词边界,也就是指单词和空格间的位置。例如, ‘er\b’ 可以匹配”never” 中的 ‘er’,但不能匹配 “verb” 中的 ‘er’。 |
\cx | 匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。 |
\d | 匹配一个数字字符。等价于 [0-9]。 |
\D | 匹配一个非数字字符。等价于 [^0-9] 。 |
\s | 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 |
\S | 匹配任何非空白字符。等价于 [^ \f\n\r\t\v] 。 |
. | 匹配除换行符(\n、\r)之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用像”(.|\n)”的模式。 |
\w | 匹配字母、数字、下划线。等价于’[A-Za-z0-9_]’。 |
\un | 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (?)。 |
(?=E) | 表示表示表达式后紧随E才匹配, 例如要只在using后面是naemspace时才匹配using,用using(?=\s+namespace) |
(?!E) | 表示表示表达式后不跟随E才匹配 |