正则

元字符

正则

量词

正则

分支和字符集

字符集其实也可以用分支表示,只是在分支中可以是一个表达式(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’)