正则
元字符
量词
分支和字符集
字符集其实也可以用分支表示,只是在分支中可以是一个表达式(a|abc),但是在字符集中只能是一个元素
- (a|b|c)
- [abc]
- [^abc]
分组和引用
- /(\d{4})-(\d{2})-(\d{2})/
每一个括号表示一个分组,一般的分组是用于记忆,便于后面再次使用前面分组的匹配结果. - /(\d{4})-(\d{2})-\2/
- /(?\d{4})-(?\d{2})-(?\d{2})/.exec(‘2019-04-10’).groups
{year: “2019”, month: “04”, day: “10”}
具名分组、为分组的匹配结果指定一个名字,这样就不用通过\1等没有意义的表达式获取匹配结果,可以直接通过名字获取。 - /(?\d{4})-(?\d{2})-\k/
通过\k指定具体的分组名字即可。
零宽断言
零宽断言用来预先判断一个字符串是否与指定的断言表达式一致,匹配成功之后才进行真正的匹配。零宽断言可以看成是在匹配之前做的一个大概的校验,只有满足该校验条件才进行匹配,零宽断言本身不占位。
贪婪、惰性
- 贪婪模式——在匹配成功的前提下,尽可能多的去匹配
/.*bbb/g.test(‘abbbaabbbaaabbb1234’)
- 惰性模式——在匹配成功的前提下,尽可能少的去匹配
/.*?bbb/g.test(‘abbbaabbbaaabbb1234’)