1. 正则表达式的两种基本字符
(1) 普通字符
普通字符包括没有显式指定为元字符的所有可打印和不可打印字符。这包括所有大写和小写字母、所有数字、所有标点符号和一些其他符号
(2) 元字符
正则表达式中有特殊含义的非字母字符。
* 非打印字符
* 特殊字符
* 限定字符
限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。有 * 或 + 或 ? 或 {n} 或 {n,} 或 {n,m} 共6种。
* 定位符
定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。
注意:
不能将限定符与定位符一起使用。由于在紧靠换行或者单词边界的前面或后面不能有一个以上位置,因此不允许诸如 ^* 之类的表达式。
2. 字符类
- 可以使用元字符
[]
来构建一个简单的类。- 所谓的类是指符合某些特性的对象,一个泛指,而不是特指某个字符。
字符类取反
- 使用元字符^创建反向类
- 反向类的意思是不属于某类的内容
- 表达式[^abc]表示不是字符a或b或c的内容
3.范围类
使用[a-z]来连接两个字符表示从a到z的任意字符
这个是个闭区间。
在[]组成的类内部可以连写[a-zA-Z]
4.预定义类
5. 贪婪模式(会尽可能多的匹配文字)
6. 非贪婪模式
正则表达式尽可能少的匹配,也就是说一旦匹配成功不再继续尝试。
做法:在量词后面加上?即可。
通过在 *、+ 或 ? 限定符之后放置 ?,该表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配。
7.分组
使用()可以达到分组的功能,使量词作用于分组。
8. 反向引用
- 对一个正则表达式模式或部分模式两边添加
圆括号
将导致相关匹配存储到一个临时缓冲区中,所捕获的每个子匹配都按照在正则表达式模式中从左到右出现的顺序存储。缓冲区编号从 1 开始,最多可存储 99 个捕获的子表达式。
每个缓冲区都可以使用$n 访问
,其中 n 为一个标识特定缓冲区的一位或两位十进制数。- 可以使用非捕获元字符 ?:、?= 或 ?! 来重写捕获,忽略对相关匹配的保存。
(不希望捕获某些分组,只需要在分组内加上? :
)
9.前瞻
- 正则表达式从文本头部向尾部开始解析,文本尾部方向,称为“前”。
- 前瞻就是在正则表达式匹配到规则的时候,向前检查符合断言,后顾/后瞻方向相反。
- Javascript不支持后顾
符合和不符合特定断言称为肯定/正向
匹配和否定/负向
匹配。
正向前瞻 :
exp(?=assert)
负向前瞻:exp(?!assert)
网友评论