什么是正则表达式?
是构成搜索模式的字符序列。
该搜索模式可用于文本搜索和文本替换操作。
一、元字符
\d | 0-9任意一个数字 |
[] | 方括号之间的任意一个字符 |
[^] | 非其中的任意一个字符 |
\w | 数字、字母、下划线 |
. | 除换行符外的任意一个字符 |
| | 或(多用于月份) |
? | 0-1次 |
+ | 1-多次 |
* | 0-多次 |
{,} | 最少,最多 |
^ | 开始(用于表单页面) |
$ | 结束(用于表单页面) |
二、常见的正则表达式方法
1、手机号验证的正则表达式
(一般手机号以1开头有十一位)
^1[0-9]{10}$
1 // 手机号 2 var txt="13559123478"; 3 var reg=/^1[0-9]{10}$/; 4 console.log(reg.test(txt));
(验证比较精确的表达式)
^1[3|4|5|7|8][0-9]{9}$
1 var txt="13559123478"; 2 var reg=/^1[3][0-9]{9}$/; 3 console.log(reg.test(txt));
2、邮箱正则表达式
(1)、只允许英文字母、数字、下划线、英文句号以及中划线
举例:.Nice-001@qq.com
分析邮件名称部分:
- 26个大小写字母表现为a-z A-Z
- 数字表示为0-9
- 下划线表示为_
- 中划线表示为-
邮件表达式为:[a-zA-Z0-9_-]+
分析域名部分:12-34.com.cn
- 域名类似 "##.##.##.##"组成
- ##部分可以表示为 [a-zA-Z0-9_-]+
- ".##"部分可以表示为 \.[a-zA-Z0-9_-]+
- 多个".##"部分可以表示为 (\.[a-zA-Z0-9_-]+)+
域名部分可以表示为: [a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+
最终表达式为:“^”匹配邮箱的开头 “$匹配邮箱的结尾”
:: ^ [a-zA-Z0-9_-]+@ [a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
(2)名称允许汉字、字母、数字,域名只允许英文域名
::^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$
3、汉字正则表达式
::[\u4e00-\u9fa5]
// 中文 var txt="你"; var reg=/[\u4e00-\u9fa5]/; // \u4e00-\u9fa5 // \u4e00-\u4e00 console.log(reg.test(txt));
4、年月日正则表达式
1 ^((([0-9]{2})(0[48]|[2468][048]|[13579][26])) #闰年,能被4整除但不能被100整除 2 |((0[48]|[2468][048]|[13579][26])00) #闰年,能被400整除 3 -02-29) #匹配闰年2月29日这一天。如果不是这一天,则由下面式子继续匹配验证。 4 |([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3}) #平年(0001-9999) 5 -(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])) #月日,1、3、5、7、8、10、12月有31天 6 |((0[469]|11)-(0[1-9]|[12][0-9]|30)) #月日,4、6、9、11月有30天 7 |(02-(0[1-9]|[1][0-9]|2[0-8]))) #平年2月只有28天,月日表示为【02-01至02-28】
5、密码验证
1 /** 2 * 密码至少包含 数字和英文,长度6-20 3 */ 4 String reg = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,20}$"; 5 6 /** 7 * 密码包含 数字,英文,字符中的两种以上,长度6-20 8 */ 9 String reg = "^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{6,20}$"; 10 11 /** 12 * 至少包含数字跟字母,可以有字符 13 */ 14 String reg = "(?=.*([a-zA-Z].*))(?=.*[0-9].*)[a-zA-Z0-9-*/+.~!@#$%^&*()]{6,20}$";