正则表达式(二)简单应用

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中包含特定格式数据的次数,如日期

 

posted @ 2019-04-08 09:27  拳拳  阅读(309)  评论(0编辑  收藏  举报