正则表达式基本语法:
- 界定符
- 原子
- 量词
- 边界控制
- 模式单元
界定符:
表示一个正则表达式的开始和结束。
例如:'/[0-9]/'
原子:
可见原子:
Unicode编码表中用键盘输出后肉眼可见的字符:
- 标点; " _ ?等等
- 英文字母数字:a-z A-Z 0-9
- 汉字、日文、阿拉伯文等等其他语言文字
- 其他可见字符
不可见原子:
Unicode编码表中用键盘输出后肉眼不可见的字符:
- 换行符\n
- 回车\r
- 制表符\t
- 空格
- 其他不可见字符
我们验证语言字符的时候,我们可以先通过工具将中文转换成Unicode。
元字符:
- | 匹配两个或者多个分支选择
- [] 匹配方括号中的任意一个原子
- [^] 匹配除方括号中的原子之外的任意字符
比如:我们想要匹配Nihao或者nihao,那么我们可以(N|n)ihao,或者[Nn]ihao
[a-zA-Z0-9]:匹配a到z或者A到Z或者0到9中的任意一个字符
原子的集合:
- “.” 匹配除换行符之外的任意字符。
- “\d” 匹配任意一个十进制数字,即[0-9]
- "\D" 匹配任意一个非十进制数字即[^0-9]
- "\s" 匹配任意一个不可见原子,即[\f\n\r\t\v] //\f是换页符
- "\S" 匹配任意一个可见原子,即[^\f\r\n\t\v]
- "\w" 匹配任意一个数字、字母或者下划线,即[0-9a-zA-Z_]
- "\W" 匹配任意一个非数字、字母或者下划线,即[^0-9a-zA-Z_]
量词:
- {m} 表示其前面的原子恰好出现m次
- {n,} 表示其前面的原子出现至少n次
- {m,n} 表示其前面的原子最少出现m次,最多出现n次
- * 匹配0次、1次或者多次其之前的原子,即{0,}
- + 匹配1次或者多次其之前的原子,即{1,}
- ? 匹配0次或者1次其之前的原子,即{0,1}
边界控制和模式单元:
- ^ 匹配字符串的开始位置
- $ 匹配字符串的结束位置,~$表示必须以$结束
- () 括号中的整体当做一个原子
模式单元,即将括号和括号中的正则表达式当做一个原子来看待。