正则表达式(二)简单应用
1,手机号正则
获取最新运营商手机号码段(2019-04)
/**
* 正则:手机号
*移动: 134 135 136 137 138 139
147(上网卡)
150 151 152 157 158 159
165
172 178(4G)
182 183 184 187 188
1440(物联网) 148(物联网) 198
*联通: 130 131 132
145(上网卡)
155 156
171 175 176(4G)
185 186
146(物联网) 166
*电信: 133
149
153
173 174 177(4G)
180 181 189
191
1410(物联网) 199
*虚拟运营商:170,171
**/
根据上述手机号总结匹配规律如下:
13(0~9),14(1,4~9),15(0~3,5~9),16(5,6),17(0,1,2,3,4,5,6,7,8),18(0~9),19(1,8,9)
可以写出如下正则:
1) 严格手机号正则
/^1([3|8]\d|4[1,4-9]|5[0-3,5-9]|6[5,6]|7[0-8]|9[1,8,9])\d{8}$/
2) 宽容手机号正则:以1开头,3~9网段内十一位数字组合
/^1[3-9]\d{9}$/
3) 基本手机位数匹配,以1开头的十一位数字组合
/^1\d{10}$/
2,两位小数位正则
两位小数格式注意点:
1) [整数位]
2) [整数位][.][小数位]
整数位:0开头,只能出现一次
非0开头,出现1+次
小数位:0~2位
3) [.] : 有小数位则必须出现,否则不出现
得到结果规律:
[正整数](.小数位)? || 0(.小数位)?
=>(正整数 | 0) (.小数位)?
因此可以写出如下正则表达式:
/^(([1-9]\d*)|0)(\.\d{1,2})?$/
3,密码正则
数字 \d [0-9]
字母 [a-zA-Z]
数字,字母,下划线 \w
密码简单规律枚举
1)字母,数字,或者下划线的6~18位密码
/^\w{6,18}$/
2)以字母开头,由字母,数字,或者下划线的6~18位密码
/^[a-zA-Z]\w{5,17}$/
3)字母数字组合的6~18位密码(包含字母,数字的组合)
/^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{8,16}$/
使用到选择符,或者说预判符.仅仅匹配,但是不获取匹配结果.
?:,?=,?!
/**
非获取匹配
**/
(?:pattern) |
匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。 |
(?=pattern) |
正向肯定预查(look ahead positive assert),在任何匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,"Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 |
(?!pattern) |
正向否定预查(negative assert),在任何不匹配pattern的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。 |
4)大小写字母数字组合的6~18位密码(包含大写字母,小写字母,数字的组合)
同3)
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$/
4,日期格式
日期格式 yyyy-MM-dd
/\d{4}-\d{1,2}-\d{1,2}/
5,固定格式字符串[包含及次数]
1) 判断某string中是否包含特定格式数据,如日期
var str = '2019-04-08是周一'; var patt = /\d{4}-\d{1,2}-\d{1,2}/; var res =str.match(patt) // res: ["2019-04-08", index: 0, input: "2019-04-08是周一", groups: undefined]
2)判断某string中包含特定格式数据的次数,如日期