JavaScript11—正则表达式

正则表达式

创建正则表达式

构造函数创建

  • var reg = new RegExp(正则内容,修饰符);

字面量创建

  • var reg=/正则内容/修饰符

修饰符(三个)

  • i 不区分大小写
  • g 全局匹配
  • m 多行匹配

正则表达式对象的方法

test()

  • 返回一个布尔值,方法用于匹配字符串,匹配成功返回true,失败返回false

exec()

  • 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。

不可以全局匹配 加g也没用

字符串匹配正则方法

match()

  • 接受一个参数,正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null
  • 如果没有全局匹配和exsc相同,可以全局匹配

search()

  • 参数与match相同,返回字符串中第一个匹配项的索引,没有匹配项返回-1
  • 只能找到第一个,不能全局匹配

replace()

  • 用于替换,接受两个参数,第一个是匹配项,第二个可以是字符串或是一个函数
  • 当使用全局匹配时,可以完成所有元素的匹配替换

Split()

  • 把字符串分割为字符串数组。

元字符

点通配符

  • .

    • 匹配一个通配(任意一个)的字符

    • c.t 就表示第一个字符是c,第二个字符是任意字符,第三个字符是t

      • 一个点就表示一个字符
    • c.t 如果用. 来描述,.在这里就不是通配符了,而是表示第一个字符是c,第二个字符是.,第三个字符是t

方括号范围匹配

  • []

    • 表示匹配中括号中任意一个字符

    • c[aeiou]t 第一个字符是c,第二个字符可以是a,e,i,o,u中的任意一个字符,第三个字符是t

    • [0-9A-F]匹配0到9的任意数字或者大写A到大写F的任意字符(不能加逗号,可以连续写)

    • 注:

      • 写在中括号中的. (点)会变成转义字符的. 不是通配符
      • 中括号内匹配大中小括号(所有括号),都必须加转义字符\
      • 两个斜杠\在字符或者正则表达式的[]中,都是一个斜杠\
      • [0-20]实际是[0-2 0]匹配的是0到2
      • [a-Z]报错,unicode编码中a比Z大
      • [A-z]报错,大写Z到小写a中还有其他字符
      • [dabaaabcc] 注意这里出现了重复和顺序问题,这种写法其实没有任何意义,与[abcd]相同

方括号字符反义

  • [^]

    • 在[]内第一个字符是^,表示后面的字符不用,取反
    • ^^ 不选取上箭头^
    • 如果^不是第一个,作为上箭头时,只表示符号,不表示反义

转义字符类

  • \w查找单词字符。与[a-zA-Z_0-9]相同
  • \W查找非单词字符。[^0-9A-Za-z_]相同
  • \d查找数字。与[0-9]相同
  • \D查找非数字字符。与[^0-9]相同
  • \s查找空白字符。
  • \S查找非空白字符。

重复匹配

普通重复

  • {n}

    • 这里n是重复的次数,用{}表示要重复寻找。

    • a{3}表示重复3次,寻找aaa这个字符串

    • A{1}与A是相同的

    • a{2}匹配字符串a{2},并不是匹配aa

    • 如果这个n是0时,例如a{0}匹配任何空字符

    • [{}]这是匹配一个{ 或者}

    • {1,4}先找匹配最大的字符串(贪婪匹配)

    • colou{0,1}r 表示匹配 colour或者color

    • x{4,4}与x{4}相同

    • A{1,}没有给后面的内容,表示1到任意数,就是找到A以后,取最长的AAAA….字符

    • {0,}表示匹配任意内容,无论是什么都可以匹配,哪怕是空字符

    • 等价

      • /a*/g与 /a{0,}/g
      • /a+/g与/a{1,}/g
      • /a?/g与/a{0,1}/g

非贪婪匹配

  • ?*#

    • 匹配最少的字符串
    • ?一般用于*或者+,或者{num,}之后,用来匹配最少的部分

选择匹配

|

  • 是用来选择匹配的与js中的||是相似的
  • ab||cd 实际是 ab| | cd ab或者空字符串或者cd

起始和结束符

^起始符

  • 与[]是不同的,n这里是表示由n就是起始字符
  • 要求必须以某个开始

$结束符

  • n$表示n做为结束符
  • 要求必须以某个字符结束

群组

()

  • 当使用match时,加上g和不加g是有差距的

    • 不加g可以将每个群组列表在数组的下标1开始的元素
    • 加g就不能找到群组内容
  • 在replace中,如果不适用群组,后面的函数中参数第一位是符合正则的内容,第二位是符合内容的下标

  • 如果使用群组,那么后面的函数中参数分别是符合正则的内容和每个群组的内容

断言

前断言,后断言(先行断言,后行断言)

前断言

  • 先行断言,紧随其后

  • ?=

    • 查找紧随其后的内容是某个字符的条件
  • ?!

    • 查找紧随其后的内容不是某个字符的条件

后断言

  • 后行断言,紧随其前

  • ?<=

    • 前面必须是某个条件,紧随其后的字符
  • ?<!

    • 前面必须不是某个条件,紧随其后的字符

典型案例

中文匹配

  • [\u4e00 - \u9fa5]

密码等级

  • /^(\d{8,16}|[a-z]{8,16}|[A-Z]{8,16})$/
  • /^([0-9a-zA-Z]{8,16})$/
  • /^([\w!@#$%^&*]{8,16})$/

手机号码加密

验证IP

过滤标签

匹配qq号

  • /^\d{6,11}$/;

匹配手机号

  • /^1[34578]\d{9}$/

匹配邮箱

  • /^\w+@[a-z0-9]{2,4}.[a-z]{2,4}$/

检测网址

  • /^https?😕/w{3}.\w+.[a-z]{2,4}$/i

XMind: ZEN - Trial Version

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值