正则学习小记

最近做项目的时候涉及到一些数据校验的部分,感觉自己对于正则表达式可以说是遗忘得非常彻底了...所以做一个比较完整的笔记来补充一下正则知识吧!


正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

搜索模式可用于文本搜索和文本替换。

基础部分

一、基本语义描述符

1、\d(数字字符)与\d(非数字字符)

2、\w(字母数字下划线)与\w(非字母数字下划线)

3、\s(空白字符)与\s(非空白字符)
空白字符包括制表符、换行符、垂直制表符、换页符、回车符

4、.(任何字符,除n)

5、\xXX(单字节)与\uXXXX(双字节)

二、定位描述符

1、^ (匹配字符串的开始位置)

2、$(匹配字符串的结束位置)

3、\b(空格)与\b(非空格)

三、重复描述符

1、*(匹配0-∞次 等价于{0,})

2、+(匹配1-∞次 等价于{1,})

3、?(匹配0-1次 等价于{0,1})

4、{n}(匹配n次,n>0)

5、{n,}(匹配n-∞次,n>0)

6、{n,m}(匹配前一项至少n次,但是不能超过m次 ,n>0 且 n<=m)

四、选择描述符

1、|(或操作)

2、[](IN操作,匹配所包含的任意一个字符

`[^]`非的情况

IN条件与或条件的区别:或条件是支持多字符,将一个段做为一个整体而IN条件只支持单字符

五、组(...)与非捕获组(?:...)

正则表达式会将刮号里的内容单独保存成一个组,并且匹配到的组可以反向引用,n是引用第n组

pattern.Add("\\.(.{1,6})");//.开头取6个字符
结果:Group[0]=.tansea Group[1]=tansea

如果不想把刮号里的内容保存到组,可以用非捕获组

pattern.Add("\\.(?:.{1,6})");
搜索模式:g,i,m
reg=new RegExp("pattern",["flags"])的方式比较好
pattern: 正则表达式
flags: g  全文查找出现的所有pattern
      i  忽略大小写
      m  多行查找

附:常用的正则表达式以及校验工具
https://c.runoob.com/front-en...

相关推荐