正则小公举

 

语法

 

  • [abc]单个字符:a或b或c
  • [^abc]a,b,c以外的单个字符
  • [a-zA-Z0-9]字符范围
  • .任意字符
  • \s空字符
  • \S非空字符
  • \d数字字符
  • \D非数字字符
  • \w单词(字母,数字,下划线)
  • \W非单词
  • \b单词边界
  • \b非单词边界
  • ^开头
  • $结尾
  • (...)分组
  • (a|b)a或b
  • a*重复0次或多次
  • a?重复0次或1次
  • a+重复1次或多次
  • a{3}重复3次
  • a{3,}重复3次或多次
  • a{3,5}重复3到5次
  • ?非贪婪匹配
  • (?:abc)非捕获分组
  • (?=abc)正向匹配abc
  • (?!abc)正向不匹配abc
  • \xhh十六进制hh字符
  • \uhhhh十六进制hhhh字符
  • \u{hhhh}(仅当设置了u标志时)十六进制hhhh字符
  • \cX控制字符
  • \0空字符
  • \aalert字符
  • \t制表符
  • \n换行符
  • \v垂直制表符
  • \f换页符
  • \r回车符
  • \eescape字符
  • [\b]退格符

 

(?=y)

匹配'x'仅仅当'x'后面跟着'y'.这种叫做先行断言。

例如,/Jack(?=Sprat)/会匹配到'Jack'仅仅当它后面跟着'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack’仅仅当它后面跟着'Sprat'或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配结果的一部分。

(?<=y)x

匹配'x'仅仅当'x'前面是'y'.这种叫做后行断言。

例如,/(?<=Jack)Sprat/会匹配到' Sprat '仅仅当它前面是' Jack '。/(?<=Jack|Tom)Sprat/匹配‘ Sprat ’仅仅当它前面是'Jack'或者是‘Tom’。但是‘Jack’和‘Tom’都不是匹配结果的一部分。

x(?!y)

仅仅当'x'后面不跟着'y'时匹配'x',这被称为正向否定查找。

例如,仅仅当这个数字后面没有跟小数点的时候,/\d+(?!\.)/ 匹配一个数字。正则表达式/\d+(?!\.)/.exec("3.141")匹配‘141’而不是‘3.141’

(?<!y)x

仅仅当'x'前面不是'y'时匹配'x',这被称为反向否定查找。

例如, 仅仅当这个数字前面没有负号的时候,/(?<!-)\d+/ 匹配一个数字。
/(?<!-)\d+/.exec('3') 匹配到 "3".
/(?<!-)\d+/.exec('-3') 因为这个数字前有负号,所以没有匹配到。

posted @ 2019-12-11 15:41  Dream_It_Possible  阅读(137)  评论(0编辑  收藏  举报