正则表达式

一、正则表达式的基本语法和规则

1.备选字符集:无论备选字符集包含多少字符, 必须-只能选1个

例如:

        6位数字的密码

        [0123456789][0123456789][0123456789][0123456789][0123456789][0123456789]

        简化:可用-表示范围的区间: [0-9][0-9][0-9][0-9][0-9][0-9]

(1) [0-9]: 0~9其中一个

(2) [a-z]:1位小写字母

(3) [A-Z]:1位大写字母

(4) [A-Za-z]:1位字母,大小写都行

(5) [0-9a-zA-Z]:1位字母或数字都行

(6) [^不能选的字符列表]:反选 

        例如:[^7] 不能选择7

2. 预定义字符集:为常用的字符集专门提供的简化写法!

(1)  \d == [0-9]:1位数字

(2)  \w == [0-9a-zA-Z_]:1位字母,数字或_

(3) \s:1位空字符,匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。

(4)  . : 除换行回车外的任何一个字符,如: "a.[0-9]":表示一个字符串有一个"a"后面跟着一个

              任意字符和一个数字;

(5) \t:匹配一个制表符  

3.预定义字符的反义:预定义字符的大写形式都是小写的反义

(1)  \D:1位非数字字符

(2)  \S:匹配任何非空白字符。等价于 [^\f\n\r\t\v]

(3)  \v:匹配一个垂直制表符

(4)  \n:匹配一个换行符

(5)  \r:匹配一个回车符

 4. 数量词:规定相邻的字符集可出现的次数

确定数量:3种

(1)  {n}:必须反复出现n位

(2)  {n,m}:最少出现n次,最多出现m次

(3)  {n,}:至少出现n次,多了不限

 案例:

        ①:/^\d{6}$/:6位数字

        ②:手机号规则:

                第1位:只能是1

                第2位:[34578]

                第3位之后,必须是9位数字

                手机号:/^1[34578]\d{9}$/

 不确定数量:3种:

(4)  *: 有没有都行,次数不限,相当于{0,}

(5)  +:至少1次,重复次数不限,相当于{1,}

(6)  ?:有没有都行,最多1次,相当于{0,1}

(7)  ():分组

案例:

        身份证号逻辑:

                前15位数字

                16,17位必须是数字

                最后一位可以是数字或X x

                后三位 可有可无,如果有,只能出现一次

                \d{15}(\d\d[0-9Xx])?

(8)   |:左右两正则表达式选其一

案例:

        手机号:

                手机号前可能出现+86或0086。

                前缀可有可无,且只能出现一次

                前缀和手机号之间可以有或没有任意个空字符 

            第1位:只能是1

                第2位:[34578]

                第3位之后,必须是9位数字

              手机号:

              (\+86|0086)?\s*1[34578]\d{9}

5. 指定匹配位置

(1)  ^表达式:必须以表达式开头

案例:

        比如:选择字符串开头的空格?^\s*

(2)  表达式$:  必须以表达式结尾

         选择结尾空格?\s*$

        选择开头或结尾的空格?^\s*|\s*$

(3)*预告:今后只要在程序中执行验证:都要前加^后加$*

比如:

       ^\d{6}$——从头到尾必须只能是6位数字

       1234567

6.预判: 在正式匹配正则表达式之前,先预读整个字符串,进行初步匹配,如果预判都未通过,则不再验证!

(1)  (?=表达式): 先浏览字符串是否满足表达式的要求

案例:

         比如:2位数字,但不能包含4和7       (?=[^47]$) 

(2)  (?!表达式):先检查字符串是否不满足表达式要求

 案例: 

        比如:不能都由小写字母和数字组成:    (?![a-z0-9]+$)

7.特殊字符

(1)  $:匹配输入字符串的结尾位置。

(2)  (): 标记一个子表达式的开始和结束位置。

(3)  *:匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。

(4)  +:匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。

(5)  .: 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \.。

(6)  [: 标记一个中括号表达式的开始。要匹配 [,请使用 \[。

(7)  ?: 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。

(8)  \:将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "(".

(9)  ^: 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。

(10)  {: 标记限定符表达式的开始。要匹配 {,请使用 \{。

(11)  |: 指明两项之间的一个选择。要匹配 |,请使用 \|。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值