正则表达式笔记

目标

来源

  • 了解正则表达式语法
  • 在 IDE 中使用正则表达式处理复杂的字符串查找、替换需求
  • 在 JavaScript 程序设计中使用正则表达式处理字符串

什么是正则表达式

  • Regular-Expression 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串
  • 说简单了就是按照某种规则去匹配符合条件的字符串

通配符

1
find ./ -name *.txt

REGEXPER

1
^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$

REGEXPER

reg 解释
元字符
. 任意字符
\w 匹配除换行符以外的任意字符
\s 匹配字母或数字或下划线或汉字
\d 匹配数字
\b 单词边界
^ 开头
$ 结尾
字符转义
\ 转义
重复
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复 n 次
{n,} 重复 n 次或更多次
{n,m} 重复 n 次到 m 次
字符类
[]
\d [0-9]
\w [a-zA-Z0-9_]
分支条件
` `
*分组
() 分组
$1 获取分组
反义
\W 匹配任意不是字母,数字,下划线,汉字的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^x] 匹配除了 x 以外的任意字符
[^aeiou] 匹配除了 aeiou 这几个字母以外的任意字符
贪婪与懒惰
*? 重复任意次,但尽可能少重复
+? 重复 1 次或更多次,但尽可能少重复
?? 重复 0 次或 1 次,但尽可能少重
{n,m}? 重复 n 到 m 次,但尽可能少重复
{n,}? 重复 n 次以上,但尽可能少重复
其他
\a 报警字符(打印它的效果是电脑嘀一声)
\b 通常是单词分界位置,但如果在字符类里使用代表退格
\t 制表符,Tab
\r 回车
\v 竖向制表符
\f 换页符
\n 换行符
\e Escape
\0nn ASCII 代码中八进制代码为 nn 的字符
\xnn ASCII 代码中十六进制代码为 nn 的字符
\unnnn Unicode 代码中十六进制代码为 nnnn 的字符
\cN ASCII 控制字符。比如、cC 代表 Ctrl+C
\A 字符串开头(类似^,但不受处理多行选项的影响)
\Z 字符串结尾或行尾(不受处理多行选项的影响)
\z 字符串结尾(类似$,但不受处理多行选项的影响)
\G 当前搜索的开头
\p{name} Unicode 中命名为 name 的字符类,例如、p{IsGreek}
(?>exp) 贪婪子表达式
(?<x>-<y>exp) 平衡组
(?im-nsx:exp) 在子表达式 exp 中改变处理选项
(?im-nsx) 为表达式后面的部分改变处理选项
(?(exp)yes|no) 把 exp 当作零宽正向先行断言,如果在这个位置能匹配,使用 yes 作为此组的表达式;否则使用 no
(?(exp)yes) 同上,只是使用空表达式作为 no
(?(name)yes|no) 如果命名为 name 的组捕获到了内容,使用 yes 作为表达式;否则使用 no
(?(name)yes) 同上,只是使用空表达式作为 no

REGEXP 对象

JavaScript 通过内置对象 RegExp 支持正则表达式

有两种方式实例化 RegExp 对象

  • 字面量
  • 构造函数
1
2
3
/*字面量*/
var reg = /\bis\b /g;//g 是全局搜索
'He is a Boy. This is a boy. Where is she'.replace(reg,'IS')
1
var reg = new RegExp('\\bis\\b','g')

标识符

  • g:global 全文搜索,不添加,搜索到地一个匹配停止
  • i:ignore case 忽略大小写,默认大小写敏感
  • m:multiple lines 多行搜索

正则表达式笔记
https://bubao.github.io/posts/7d3925ab.html
作者
一念
发布于
2016年8月10日
许可协议