《JavaScript正则表达式迷你书》读书笔记

2019-10-15  本文已影响0人  roastwind

正则基础

常见简写形式

字符组 具体含义 记忆方式
\d 表示 [0-9]。表示是一位数字。 其英文是 digit(数字)
\D 表示 [^0-9]。表示除数字外的任意字符。
\w 表示 [0-9a-zA-Z_]。表示数字、大小写字母和下划线。 w 是 word 的简写,也称单词字符。
\W 表示 [^0-9a-zA-Z_]。非单词字符。
\s 表示 [ \t\v\n\r\f]。表示空白符,包括空格、水平制表符、垂直制表符、换行符、回车符、换页 符。 s 是 space 的首字母,空白符的单词是 white space。
\S 表示 [^ \t\v\n\r\f]。 非空白符。
. 表示 [^\n\r\u2028\u2029]。通配符,表示几乎任意字符。换行符、回车符、行分隔符和段分隔符 除外。 想想省略号 ... 中的每个点,都可以理解成占位符,表示任何类似的东西。
[\d\D]/[\w\W]/[\s\S]/[^] 任意字符

量词

字符组 具体含义 记忆方式
{m, } 至少出现m次
{m} 等价于{m, m}, 出现m次
? 等价于{0, 1}, 出现或者不出现 问号的意思: 有么?
+ 等价于{1, }, 表示至少出现一次 加号是追加的意思,表示必须现有一个,然后才考虑追加
* 等价于{0, }, 出现任意次, 有可能不出现 看看天上的星星,可能一颗没有,可能零散有几颗,可能数也数不过来

修饰符

字符组 具体含义 记忆方式
g 匹配全局 单词是global
i 忽略字母大小写 单词是ignoreCase
m 多行匹配, 只影响 ^ 和 $,二者变成行的概念,即行开头和行结尾 单词是multiline

匹配位置

字符组 具体含义 记忆方式
^ (脱字符)匹配开头
$ (美元符号)匹配结尾
\b 单词边界 \w 与 \W 之间的位置,也包括 \w 与 ^ 之间的位置,和 \w 与 $ 之间的位置
\B 非单词边界
(?=p) "p"的子模式, "p" 前面的位置 positive lookahead(正向先行断言)
(?!p) 非"p"前的位置 negative lookahead(负向先行断言)

匹配开头与结尾

ES5之后版本支持的位置判断

举例

常用正则

词法 含义 记忆方式
(?=.[A-Z]) / (?=.?[A-Z]) / (.*[A-Z]) 至少包含一个大写字母

括号的作用

分组和分支

分组引用: 正则引擎给分组开辟了一个空间, 用来存储每个分组匹配到的数据

反向引用: \1

非捕获括号: (?:p)

非捕获匹配到的值不会保存起来

实战应用

trim: 去掉头部和尾部的空字符串

将每个单词的首字母转换为大写

驼峰

中划线化

HTML转义和反转义

回溯法

拆分

正则表达式构建

正则表达式编程

真实案例

参考资料

上一篇下一篇

猜你喜欢

热点阅读