用某种模式去匹配指定字符串的一种表示方式。
普通字符 :如字母、数字、汉字等。
元字符 :可以匹配某些字符形式的具有特殊含义的字符,其作用类似于 DOS 命令使用的通配符。
1.正则表达式基本书写符号
符号 | 含义 | 示例 | 解释 | 匹配输入 |
\ | 转义符 | \* | 符号“*” | * |
[ ] | 可接收的字符列表 | [efgh] | e、f、g、h中的任意1个字符 | e、f、g、h |
[^ ] | 不接收的字符列表 | [^abc] | 除a、b、c之外的任意1个字符,包括汉字、数字和特殊符号 | m、q、5、* |
| | 匹配“|”之前或之后的表达式 | ab|cd | ab或者cd | ab、cd |
( ) | 将子表达式分组 | (abc) | 将字符串abc作为一组 | abc |
- | 连字符 | A-Z | 任意单个大写英文字母 | 大写字母 |
2.正则表达式限定符
限定符将可选数量的数据添加到正则表达式,下表为常用限定符:
符号 | 含义 | 示例 | 解释 | 匹配输入 | 不匹配输入 |
* | 指定字符重复0次或n次 | (abc)* | 仅包含任意个abc的字符串 | abc、abcabcabc | a、abca |
+ | 指定字符重复1次或n次 | m+(abc)* | 以至少1个m开头,后接任意个abc的字符串 | m、mabc、mabcabc | ma、abc |
? | 指定字符重复0次或1次 | m+abc? | 以至少1个m开头,后接ab或abc的字符串 | mab、mabc、mmmab、mmabc | ab、abc、mabcc |
{n} | 只能输入n个字符 | [abcd]{3} | 由abcd中字母组成的任意长度为3的字符串 | abc、dbc、adc | a、aa、dcbd |
符号 | 含义 | 示例 | 解释 | 匹配输入 | 不匹配输入 |
{n,} | 指定至少 n 个匹配 | [abcd]{3,} | 由abcd中字母组成的任意长度不小于3的字符串 | aab、dbc、aaabdc | a、cd、bb |
{n,m} | 指定至少 n 个但不多于 m 个匹配 | [abcd]{3,5} | 由abcd中字母组成的任意长度不小于3,不大于5的字符串 | abc、abcd、aaaaa、bcdab | ab、ababab、a |
^ | 指定起始字符 | ^[0-9]+[a-z]* | 以至少1个数字开头,后接任意个小写字母的字符串 | 123、6aa、555edf | abc、aaa、a33 |
$ | 指定结束字符 | ^[0-9]\-[a-z]+$ | 以1个数字开头后接连字符“–”,并以至少1个小写字母结尾的字符串 | 2-a、3-ddd、5-efg | 33a、8-、7-Ab |
3. 匹配字符集
(1) 匹配字符集是预定义的用于正则表达式中的符号集。
(2) 如果字符串与字符集中的任何一个字符相匹配,它就会找到这个匹配项。
正则表达式中的部分匹配字符集
符号 | 含义 | 示例 | 解释 | 匹配输入 | 不匹配输入 |
. | 匹配除 \n以外的任何字符 | a..b | 以a开头,b结尾,中间包括2个任意字符的长度为4的字符串 | aaab、aefb、a35b、a#*b | ab、aaaa、a347b |
\d | 匹配单个数字字符,相当于[0-9] | \d{3}(\d)? | 包含3个或4个数字的字符串 | 123、9876 | 12、01023 |
\D | 匹配单个非数字字符,相当于[^0-9] | \D(\d)* | 以单个非数字字符开头,后接任意个数字字符串 | a、A342 | aa、AA78、1234 |
\w | 匹配单个数字、大小写字母和汉字字符 | \d{3}\w{4} | 以3个数字字符开头的长度为7的字符串 | 234abcd、12345Pe | 58a、Ra46 |
\W | 匹配单个除汉字、字母、数字以外的其他字符 | \W+\d{2} | 以至少1个非数字、字母和汉字的字符开头,2个数字字符结尾的字符串 | #29、#?@10 | 23、#?@100 |
4. 分组构造
常用分组构造形式
分组构造 | 说明 |
( ) | 非命名捕获。捕获匹配的子字符串(或非捕获组)。编号为零的第一个捕获是由整个正则表达式模式匹配的文本,其它捕获结果则根据左括号的顺序从1开始自动编号。 |
(?<name>) | 命名捕获。将匹配的子字符串捕获到一个组名称或编号名称中。也可以用单引号替代尖括号,例如 (?'name') |
5. 正则表达式举例
(1)至少1个字符:.{1,}
(2)3个“.”句点符号:\.{3}
(3)括号括起来的2~3个数字构成的字符串:\([0-9]{2,3}\)其中的反斜杠“\”表示转义。
(4)必须包含“ab”的字符串:.{0,}ab.{0,}
(5)以字母开头,允许包含字母、数字及下划线,长度为5~16:[a-zA-Z][a-zA-Z0-9_ ]{5,16}
(6)国内电话号码:( \d{3}-| \d{4}-)?( \d{8}| \d{7})
(7)至少3个汉字:[\u4e00-\u9fa5]{3,}