正则表达式

创建正则表达式
  1. 字面量方式创建 var reg = /abcd/
  2. 内置构造函数创建 var reg = new RegExp(“abcd”,“gi”)
    两种创建方式的区别
  • 语法不一样
  • 书写标识符的时候
    =>字面量方式直接书写在正则的后面
    =>内置构造函数,以第二个参数的方式传递
  • 拼接字符串
    =>字面量方式不接受拼接字符串
    =>内置构造函数方式,可以拼接字符串
  • 基本元字符书写
    =>字面量方式的时候,直接书写\s\d\w
    =>内置构造函数,书写\ \s\ \d\ \w
    为什么内置函数构造需要书写双斜线
    因为字符串中\是转义符,那么当你书写字符串\s的时候,\就会把s转换成有意义的特殊内容,因为字符串中确实没有\s组成的特殊意义字符,所有就变成了一个单独的字母s
    解决问题
    => 使用\把有意义的特殊字符 \转换成没有意义的文本\
常用方法
  • test() 匹配
    语法:正则表达式.test(“要检测的字符串”)
    返回值:布尔值
    如果该字符串符合正则的规则,那么就是true,否则为false

  • exex() 捕获
    语法:正则.exec(字符串)
    作用:从 字符串中 把满足正则条件的部分获取出来
    返回值:

    • 原始字符中没有符合正则要求的字符串片段,null

    • 原始字符串中符合正则要求的片段

      1. 正则没有() 也没有 全局标识符g 返回值为数组,索引0是从字符串中捕获出来的满足正则条件的第一个内容
        特点:不管捕获多少次,每次都是从原始字符串的索引0开始检索

      2. 正则有全局标识符g, 返回值是一个数组
        索引0是从字符串中捕获出来的满足正则条件的第一个内容
        注意:第二次捕获是从第一次的结束位置开始向后查询,直到最后捕获不到为止,再下一次的时候,又从字符串的索引0开始检索

      3. 有(),返回值是一个数组
        索引0是从字符串中捕获出来的满足正则条件的第一个内容
        从索引1开始,一次是每一个小括号的单独内容
        ()有两个意义 1. 一个整体 2. 单独捕获
        如果想要使用一个意义,整体的所用,不想再捕获的时候单独捕获出来,可以写成(?:)匹配但不捕获

正则表达式的符号 - 基本元字符

元字符 =》所有的文本内容
=》特殊符号,用符号表示一类内容

  1. \d 表示一位 数字
  2. \D 表示一位 非数字
  3. \s 表示一位 空白内容(空格/缩进/制表符/…)
  4. \S 表示一位 非空白内容
  5. \w 表示一位 **数字(0-9)字母(a-z A-Z)下划线(_)**中人的任意一个
  6. \W 表示一位 非数字字母下划线中的任意一个
  7. . 表示一位 非换行以外的任意内容 \n表示换行
  8. \ 表示转义符
    把有意义的符号转换成没有意义的普通文本
    把没有意义的文本转换成有意义的符号

元字符 - 边界符号
9. ^ 表示字符串开始
10. $ 表示字符串结尾

元字符 - 限定符
注意:一个限定符智能修饰符号前面的一个内容的出现次数
11. * 表示出现 0- 多次
12. + 表示出现1 - 多次
13. ? 表示出现 0 - 1次
14. {n} 表示出现指定多少次
15. {n,} 表示出现至少多少次
{0,} 等价于*
{1,}等价于+
16. {n,m}表示出现n~m
{0,1} 等价于 ?

元字符 - 特殊符号
17. () 意义1:一个整体 意义2:单独捕获()
18. | 或者的意思 或的边界,要么是(),要么就到正则的边界
19. [] 包含
注意:一个[]内可以写多个内容,但是一个[]只占一个字符位置,表示[]内任意一个均行
[0-9]等价于\d
[0-9a-zA-Z] 等价于 \w
20. [^] 非
一个[ ^ ] 内可以写多个内容,但是一个[ ^ ]只占一个字符位置,表示【^】内的任意一个都不行
[^0-9] 等价于\D
[^0-9a-zA-Z]等价于\W
21. - 中划线 到 至
注意: 需要和[]或者[^]连用
需要ASCII编码连着才行

标识符

书写在正则表达式外面,专门用来修饰整个正则表达式的符号

  1. i(ignore)
    =>表示忽略大小写不计
    var reg = /abcd/i
  2. g(global)
    全局:
正则的两大特性
  1. 懒惰性
    => 每一次捕获都是从原始字符串的索引0位置开始检索
    => 解决:使用全局标识符g
  2. 贪婪性
    => 贪婪匹配:能拿多少拿多少 尽可能多的匹配内容
    => 非贪婪匹配:能拿到多少拿多少 尽可能少的匹配内容
    => 需要使用非贪婪匹配字符
    => 在原先的限定符后面再写一个?
    *? 0 -多次,但是0次能解决问题,就不再多
    +? 1-多次,但是1次能解决问题,就不再多
    ?? 0-1次,0次能解决问题,就不去管1次
    {n,}?
    {n,m}?
字符串和正则合作的方法
  1. replace
    语法:字符串.replace(‘换下字符’,‘换上字符’)
    字符串.replace(正则表达式,‘换上字符’)
    返回值:替换好的字符串
    => 当你的第一个参数传递字符串的时候,只能替换一个
    => 当你的第一个参数传递的是正则表达式的时候,只能替换一个
    => 但是如果你的正则表达式有全局标识符g,那么有多少替换多少
  2. search
    语法:字符串.search(字符串片段)
    字符串.search(正则表达式)
    作用:在原始字符串内查找指定内容
    返回值:
    => 原始字符串内有指定内容,那么就是这个内容的索引
    => 原始字符串内无指定内容,那么就是 -1
  3. match()
    语法:字符串.match(字符串片段)
    字符串.match(正则表达式)
    返回值:从原始字符串中捕获满足条件的片段
    注意:如果你的参数传递的是字符串或者没有全局标识符g的正则,那么和exec返回值一模一样
    => 当你的正则有全局标识符g的时候,那么返回值是一个数组
    => 能从原始字符串内捕获多少,数组里就有多少内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值