正则表达式含义:
正则表达式是由一些具有特殊含义的字符组成的字符串,多用于查找、替换符合规则的通俗来讲就是按照某种规则来匹配符合条件的字符串。
一、元字符
元字符:即为有特定含义的字符,常见的元字符如下:
|-----|----------------------------------|
| 代码 | 说明 |
| . | 匹配除换行符以外的任意字符,只有一个字符例外 (\ n) |
| \s | 匹配任意的空白符(包含Tab和换行符)包括空格、制表符、换页符等 |
| \d | 匹配任意字符 |
| \w | 匹配字母或数字或下划线或汉字 |
| \b | 匹配单词的开始或结束 |
| ^ | 匹配字符串的开始 |
| $ | 匹配字符串的结束 |
二、反义字符
反义字符:多用于查找除某个字符以外其他任意字符均可以的情况,常用的反义字符如下:
|-------------|-----------------------|
| 代码 | 说明 |
| \W | 匹配任意不是字母,数字,下划线,汉字的字符 |
| \S | 匹配任意不是空白符的字符 |
| \D | 匹配任意不是空白符的字符 |
| \B | 匹配不是单词开头或结束的位置 |
| [^x] | 匹配除x以外的任意字符 |
| [^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |
三、特殊字符
若要匹配特殊字符,必须首先使用字符"转义",即将反斜杠字符(\)放在它们前面
|----|----------------------------------------------|
| 代码 | 说明 |
| $ | 匹配输入字符串的结尾位置,要匹配字符串$本身,请使用 \ $ |
| () | 标记一个子表达式的开始和结束位置,要匹配字符串本身,请使用 \ |
| * | 匹配前面子表达式零次或多次,要匹配 *字符,请使用 \ * |
| + | 匹配前面子表达式零次或多次,要匹配 +字符,请使用 \ + |
| . | 匹配除换行符\n以外的任意字符,要匹配 . 字符,请使用 \ . |
| [ | 标记一个中括号表达式的开始,要匹配 [ 字符,请使用 \ [ |
| ? | 匹配前面子表达式零次或多次,或指明一个非贪婪限定字符,要匹配 ? 字符,请使用 \ ? |
| \ | 将下一个字符标记为特殊字符、或愿意字符、或向后引用 |
| ^ | 匹配输入字符串的开始位置,要匹配 $ ,请使用 \ $ |
| { | 标记限定符表达式的开始,要匹配{,请使用 \ { |
| | | 指明两项之间的一个选择,要匹配| ,请使用 \ | |
四、限定符
限定符:用来指正则表达式的一个给定组件必须要出现多次才能满足匹配,常用的限定符如下:
|-------|---------------------------------------------------------------------------------------------------|
| 代码 | 说明 |
| * | 匹配前面表达式零次或多次.例如,zo* 能匹配 "z" 以及 "zoo" |
| + | 匹配前面表达式一次或更多次.例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z" |
| ? | 匹配前面表达式零次或一次,例如'di?' 能匹配'di'以及'did |
| {n} | 至少匹配n次. 'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o |
| {n, } | 重复n次或更多次. 例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 |
| [ | 标记一个中括号表达式的开始,要匹配 [ ,请使用 \ [ |
| {n,m} | m和n均为非负整数,其中n<m,最少匹配n次最多匹配m次 |
五、正则表达式常用匹配规则
1. 校验字符的表达式
(1)匹配所有的小写字母:^[a-z]$
(2)匹配所有的大写字母:^[A-Z]$
(3)匹配所有的大小写字母:^[a-zA-Z]$
(4)匹配除了小写字母以外的所有的字母:^[^a-z]$
(5)匹配除(\) (/) (^) 之外的所有字符:^[^\\\/ \^]$
(6)匹配除双引号(")和单引号(') 之外的所有字符:^[^\"\']$
2. 校验数字的表达式
(1)匹配所有的数字:^[0-9]*$
(2)匹配所有的数字、句号和减号:^[0-9\. \-]*$
(3)匹配n位数字:^\d{n}$
(4)匹配至少n位数字:^\d{n, }$
(5)匹配n-m位数字:^\d{n,m}$
(5)只能输入长度为3的字符:"^.{3}$"
(6)匹配零和非零开头的数字:^(0|[1-9][0-9]*)$
(7)匹配所有正数:^[0-9]{1, }$ 或者 ^[0-9]+$
(8)匹配所有整数:^\{0,1} [0-9] {1, }$ 或者 ^\-?[0-9]+$
(9)匹配所有非负整数:^\d+$ 或者 ^[1-9]\d*|0$
(10)匹配所有浮点数:^[-] [0-9]+\ .?[0-9]+$ 或者 ^\-?[0-9]*\ .?[0-9]*$
(11)只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"
(12)匹配所有包含一个以上的字母、数字下划线的字符串:^[a-zA-Z0-9_] {1, }$ 或者
^\-?[0-9] *\ .?[0-9]*$
- 确定重复出现
(1)所有的字母和下划线:^[a-zA-Z_]$
(2)字母a:^a$
(3)aaaa:^a{4}$
(4)aa, aaa或aaaa:^a{2,4}$
(5)a, aa或aaa:^a{1,3}$
(6)包含多余两个a的字符串:^a{2,}$
(7)所有的两个字符:.{2]