前言
正则表达式,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。维基百科
基本语法
匹配字符串的开始
匹配字符串的结束
定义一个字符串的字符范围
任何空白字符
任何非空白字符
一个数字字符
一个非数字字符
一个数字、字母、下划线字符
一个非数字、字母、下划线字符
除了换行符之外的任意一个字符
匹配前一项n次
匹配前一项n次及以上
匹配前一项至少n次,至多m次
匹配前一项0次及以上
匹配前一项1次及以上
匹配前一项0次或1次
常用的正则表达式
校验数字的表达式
数字
n位的数字
至少n位的数字
m~n位的数字
0和非0开头的数字
非0开头的最多带两位小数的数字
1
| ^([1-9][0-9]*)+(.[0-9]{1,2})?$
|
带1~2位小数的正数或负数
正数、负数、小数
有两位小数的正实数
有1~3位小数的正实数
非0的正整数
1 2 3
| ^[1-9]\d*$ ^([1-9][0-9]*){1,3}$ ^\+?[1-9][0-9]*$
|
非0的负整数
1 2
| ^\-[1-9][]0-9"*$ ^-[1-9]\d*$
|
非负整数
非正整数
1 2
| ^-[1-9]\d*|0$ ^((-\d+)|(0+))$
|
非负浮点数
1 2
| ^\d+(\.\d+)?$ ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
|
非正浮点数
1 2
| ^((-\d+(\.\d+)?)|(0+(\.0+)?))$ ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
|
正浮点数
1 2
| ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
|
负浮点数
1 2
| ^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
|
浮点数
1 2
| ^(-?\d+)(\.\d+)?$ ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
|
校验字符的表达式
汉字
英文和数字
1 2
| ^[A-Za-z0-9]+$ ^[A-Za-z0-9]{4,40}$
|
长度为3~20的所有字符
由26个英文字母组成的字符串
由26个大写英文字母组成的字符串
由26个小写英文字母组成的字符串
由数字和26个英文字母组成的字符串
由数字、26个英文字母或者下划线组成的字符串
中文、英文、数字、下划线
1
| ^[\u4E00-\u9FA5A-Za-z0-9_]+$
|
中文、英文、数字,不包括下划线等符号
1 2
| ^[\u4E00-\u9FA5A-Za-z0-9]+$ ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
|
可以输入含有^%&’,;=?$"等字符
禁止输入含有~的字符
特殊需求表达式
Email地址
1
| ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
|
域名
1
| [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
|
InternetURL
手机号码
1
| ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
|
电话号码
1
| ^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
|
国内电话号码
1
| ^\d{3}-\d{8}|\d{4}-\d{7}$
|
身份证号
短身份证号码
1 2
| ^([0-9]){7,18}(x|X)?$ ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
|
帐号是否合法
1
| ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
|
密码
强密码
1
| ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
|
日期格式
一年的12个月
1 2
| ^(0?[1-9]|1[0-2])$ >=1 && <=12
|
一个月的31天
1
| ^((0?[1-9])|((1|2)[0-9])|30|31)$
|
钱的输入格式
1 2 3 4 5 6 7 8
| ^[1-9][0-9]*$ ^(0|[1-9][0-9]*)$ ^(0|-?[1-9][0-9]*)$ ^[0-9]+(.[0-9]+)?$ ^[0-9]+(.[0-9]{2})?$ ^[0-9]+(.[0-9]{1,2})?$ ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ ^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
|
xml文件
1
| ^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
|
中文字符的正则表达式
双字节字符
空白行的正则表达式
HTML标记的正则表达式
1
| <(\S*?)[^>]*>.*?</\1>|<.*? />
|
首尾空白字符的正则表达式
腾讯QQ号
中国邮政编码
IP地址
1 2
| \d+\.\d+\.\d+\.\d+ ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
|
Javascript中的正则表达式
创建正则表达式对象
直接创建正则表达式对象
通过new关键字创建正则表达式对象
1
| let reg = new RegExp("正则表达式");
|
获取匹配的字符串
- 如果匹配成功,则返回匹配成功后截取的子字符串
- 如果匹配失败,则返回null
<str>
:参与匹配的字符串
验证正则表达式
- 如果验证正确返回true;如果验证错误返回false
<str>
:需要验证的字符串
参考文献
QQ群——DT课堂 - 辛末 - 11月新群
哔哩哔哩——黑马程序员
哔哩哔哩——黑马程序员