什么是正则表达式 ?
正则表达式是一种被用于从文本中检索符合某些特定模式的文本。
元字符
元字符 | 描述 |
---|---|
. | 匹配除换行符以外的任意字符。 |
[ ] | 字符类,匹配方括号中包含的任意字符。 |
[^ ] | 否定字符类。匹配方括号中不包含的任意字符 |
* | 匹配前面的子表达式零次或多次 |
+ | 匹配前面的子表达式一次或多次 |
? | 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。 |
{n,m} | 花括号,匹配前面字符至少 n 次,但是不超过 m 次。 |
(xyz) | 字符组,按照确切的顺序匹配字符 xyz。 |
| | 分支结构,匹配符号之前的字符或后面的字符。 |
\ | 转义符,它可以还原元字符原来的含义,允许你匹配保留字符 [ ] ( ) { } . * + ? ^ $ \ | |
^ | 匹配行的开始 |
$ | 匹配行的结束 |
简写字符集
简写 | 描述 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配所有字母和数字的字符:[a-zA-Z0-9_] |
\W | 匹配非字母和数字的字符:[^\w] |
\d | 匹配数字:[0-9] |
\D | 匹配非数字:[^\d] |
\s | 匹配空格符:[\t\n\f\r\p{Z}] |
\S | 匹配非空格符:[^\s] |
断言
符号 | 描述 |
---|---|
?= | 正向先行断言 |
?! | 负向先行断言 |
?<= | 正向后行断言 |
?<! | 负向后行断言 |
修饰符
标记 | 描述 |
---|---|
i | 不区分大小写:将匹配设置为不区分大小写。 |
g | 全局搜索:搜索整个输入字符串中的所有匹配。 |
m | 多行匹配:会匹配输入字符串每一行。 |
常用正则表达式
- 正整数:
^\d+$
- 负整数:
^-\d+$
- 电话号码:
^+?[\d\s]{3,}$
- 电话代码:
^+?[\d\s]+(?[\d\s]{10,}$
- 整数:
^-?\d+$
- 用户名:
^[\w\d_.]{4,16}$
- 字母数字字符:
^[a-zA-Z0-9]*$
- 带空格的字母数字字符:
^[a-zA-Z0-9 ]*$
- 密码:
^(?=^.{6,}$)((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.*$
- 电子邮件:
^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4})*$
- IPv4 地址:
^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))*$
- 小写字母:
^([a-z])*$
- 大写字母:
^([A-Z])*$
- 网址:
^(((http|https|ftp):\/\/)?([[a-zA-Z0-9]\-\.])+(\.)([[a-zA-Z0-9]]){2,4}([[a-zA-Z0-9]\/+=%&_\.~?\-]*))*$
- VISA 信用卡号码:
^(4[0-9]{12}(?:[0-9]{3})?)*$
- 日期(MM/DD/YYYY):
^(0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])[- /.](19|20)?[0-9]{2}$
- 日期(YYYY/MM/DD):
^(19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01])$
- 万事达信用卡号码:
^(5[1-5][0-9]{14})*$