前言
正则表达式,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。维基百科
基本语法
边界符
匹配字符串的开始
匹配字符串的结束
定义符合条件的字符匹配
指定一个确定的字符或字符串
完全匹配
或匹配
指定一个不确定的字符
指定字符
指定范围
定义不符合条件的字符匹配(取反)
指定次数
指定一个确定的次数
不指定一个确定的字符
指定次数为一个范围
区间
大于等于
指定次数为1次或0次
指定次数为1次及以上
指定次数为0次及以上
通配符
任何空白字符
任何非空白字符
一个数字字符
一个非数字字符
一个数字、字母、下划线字符
一个非数字、字母、下划线字符
除了换行符以外的任意一个字符
常用的正则表达式
校验数字的表达式
数字
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 2
| ^[a-zA-z]+://[^\s]*& ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
|
手机号码
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))
|
##中的正则表达式
创建正则表达式对象
直接创建正则表达式对象
通过new关键字创建正则表达式对象
1
| let reg = new RegExp("正则表达式");
|
获取匹配的字符串
- 如果匹配成功,则返回匹配成功后截取的子字符串
- 如果匹配失败,则返回null
<str>
:参与匹配的字符串
验证正则表达式
- 如果验证正确返回true;如果验证错误返回false
<str>
:需要验证的字符串
完成
参考文献
QQ群——DT课堂 - 辛末 - 11月新群
哔哩哔哩——黑马程序员
哔哩哔哩——黑马程序员
哔哩哔哩——黑马前端