- 也叫规则表达式,按照一定规则组成的一个表达式,主要的作用是匹配字符串
- 正则表达式在大多数编程语言中都可以使用
- 正则表达式的组成:是由元字符或者限定符组成的式子
元字符
- . 表示除\n之外的任意一个字符
- [] 表示的是范围
- [0-9] 表示由0到9之间的任意一个数字
- [a-z] 表示的是所有小写字母中的任意一个
- [A-Z] 表示的是所有大写字母中的任意一个
- [a-zA-Z] 表示的是所有字母中的任意一个
- [0-9a-zA-Z] 表示的是所有数字或者所有字母的中的任意一个
- []有另一个含义:把正则表达式中元字符的意义取消,比如:[.]表示的就是一个.
- | 表示“或者”,[0-9]|[a-z]表示要么是一个数组要么是一个小写字母
- ( ) 分组和提升优先级 ,[0-9]|([a-z])|[A-Z],会先算小括号里面的
下面的这些都是元字符,但是也可以叫限定符:
- *星号 表示前面的表达式出现0到多次
- +加号 表示前面的表达式出现1到多次,即前面的表达式最少出现一次
- ? 表示前面的表达式出现0到1次,即最少0次,最多1次;另一个含义是阻止贪婪模式
限定符
限定前面的表达式出现的次数
- { } 可以更加明确前面的表达式出现的次数
- {0, } 表示前面的表达式出现0到多次,和 * 一样
- {1, } 表示前面的表达式出现1到多次,和 +一样
- {0,1} 表示前面的表达式出现0到1次,和 ?一样
- {5,10} 表示前面的表达式出现5到10次
- {4} 表示前面的表达式出现4次
- { ,10} 这是错误的,不能这样写
- ^ 表示以后面的表达式开始(放在外面),或者表示取非即取反(放在里面)
^[0-9]
表示以数字开始^[a-z]
表示以小写字母开始[^0-9]
表示取反,非数字[^a-z]
表示取反,非小写字母[^0-9a-zA-Z_]
表示特殊字符(键盘上只能输进三种类型的字符:数字,字母,和特殊字符),注意短下划线不在特殊字符范围内- $ 表示以后面的表达式结束
- [a-z]$ 表示必须以小写字母结束
- \d 表示数字中的任意一个
- \D 表示非数字中的一个
- \s 表示空白符中的一个(空格和tab制表符都是空白符)
- \S 表示非空白符中的一个
- \w 表示非特殊符号,等价于[0-9a-zA-Z_],注意下划线不属于特殊字符的范围内
- \W 表示特殊符号
- \b 表示单词边界,即表示字符串结束的位置
注意:
正则表达式的匹配 不特别指定的时候 是不严格模式的匹配,指的就是字符串中只要有部分满足匹配规则就可以,而严格模式的匹配是整个字符串都要满足匹配规则