一种用于匹配字符串的文本模式(规则)
本文参考3W学习方法来叙述内容。
一、What
1、什么是正则表达式?
正则表达式(Regular Expression),用来描述各式各样的字符串的文本模式(排列规则),以便操作字符串。
二、Why
1、掌握了正则表达式主要能干什么?
- 常见操作系统中的文件系统都支持正则匹配,比如windows的文件夹窗口的搜索,可以通过正则表达式描述文件名来快速搜索文件
- 编程语言中优雅且高效操作字符串
三、How
1、怎样学习正则表达式?
- 掌握基础语法
- 掌握常见应用场景
2、基础语法
正则表达式由多个“表达式”+“限定符”组合而成,首先区分掌握几类字符:
- 表达式结构字符(基本书写符号)
- 限定符
- 预定义字符集(匹配字符集)
不同语言的正则表达式语法: - JavaScript: /正则表达式主体/修饰符(可选)
2.1、表达式结构字符
- 转义符
- 符号: \
- 示例:“*”,因为本身为正则表达式中的限定符(类似编程语言中的保留字),,"“表示转义匹配”"
- 可接收的字符列表
- 符号:[]
- 示例:[abc],匹配a、b、c中的任意1个字符
- 不接收的字符列表
- 符号:[^]
- 示例:[^abc],匹配除a、b、c之外的任意1个字符
- “|”之前或之后的表达式
- 符号:|
- 示例:ab|cd,匹配ab或cd
- 将子表达式分组
- 符号:()
- 示例:(abc),匹配“abc”字符串
- 区间连字符或者数字中的负号
- 符号:-
- 示例:A-Z,任意单个大写字母
2.2、限定符
- 指定字符重复0次或n次
- 符号:*
- 示例:(abc)*,匹配任意个“abc”字符串
- 指定字符重复1次或n次
- 符号:+
- 指定字符重复0次或1次
- 符号:?
- 指定字符重复为n次
- 符号:{n}
- 示例:[asdf]{3},匹配asdf中字母组成的长度为3的字符串
- 指定字符至少重复为n次
- 符号:{n,}
- 示例:[asdf]{3,},匹配asdf中字母组成的长度不小于3的字符串
- 指定字符至少重复为n次、不多于m次
- 符号:{n,m}
- 示例:[asdf]{3,6},匹配asdf中字母组成的长度为3至6之间的字符串
- 指定字符起始位置
- 符号:^
- 指定字符结束位置
- 符号:$
2.3、预定义字符集
- 匹配除 \n 以外的任何字符
- 符号:.
- 匹配单个数字字符,相当于[0-9]
- 符号:\d
- 匹配单个非数字字符,相当于[^0-9]
- 符号:\D
- 匹配单个数字、大小写字母字符,相当于[0-9a-zA-Z]
- 符号:\w
- 匹配单个非数字、大小写字母字符,相当于[^0-9a-zA-Z]
- 符号:\W
3、常见场景
3.1、匹配非负整数
^\d+$
3.2、匹配正整数
^[0-9]*[1-9][0-9]*$
3.3、匹配非正整数
^((-\d+)|(0+))$
3.4、匹配邮箱
^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
3.5、匹配URL
^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$
参考链接:http://www.51gjie.com/java/761.html