正则表达式中三种括号的详细解读

正则表达式中三种括号的详细解读

三种括号的含义 [ ], { }, ( )


1. 中括号[ ]: 匹配 单个字符 是否属于中括号中的一个字符

字符串: hello world!!
js正则表达式: /[eor]/g
匹配到的内容是: h e ll o w o r ld

中括号中有两个特殊, 连接符号 - 和 取反符号 ^

  • 连接符 - 根据ASCII表的值 从小到大 中间的范围 (左边ASCII值必须小于右边ASCII的值)

    1. [0-9] 表示 0到9 之间的数 包括 0 和 9
    2. [3-6] 表示 3到6 之间的数 包括 3 和 6
    3. [a-z] 表示 a-z 之间所有的字母 包含 a 和 z
    4. [A-Z] 表示 A-Z 之间所有的字母 包含 A 和 Z
    5. [0-9A-Z] 表示 0 到 9 和 大写A 到 大写 Z 中间所有字符
    6. [!-/] 表示 ASCII 表中 ! 到 / 之间的所有字符 包含 ! 和 / 字符
  • 取反符号 ^ 紧跟在^后的一个字符, 则不匹配

    1. [^a] 表示不匹配 a 字符
    2. [^abc] 表示不匹配 a 字符
    3. [^\^^\] 表示不匹配 ^ 和 \ 字符
    4. [^4-5] 表示不匹配 4 到 5 之间的数字包括 4 和 5 也不匹配
    5. [^b-d^1-3^5] 表示不匹配b c d 1 2 3 5 这几个字符

值得一提, 中括号中的特殊符号也会认为是字符 比如 <>, (), {} 都会被看作字符的括号而非特殊含义, ^ - \ 这个三个特殊符号保留特殊含义, 想要匹配^ - \ 则使用\^, \-, \\


2. 大括号{ }, 用于重复次数, 大括号左边表达式的匹配次数

字符串: hello world!!
js正则表达式: /l{2}/g
匹配到的内容是: he ll o world!!

  1. a{1, 4} 匹配 a 字符 1 到 4次 如 a aa aaa aaaa
  2. [0-9]{3} 匹配连续 3 个数字
  3. [a-z]{1,} 匹配小写字母字符 1次到无数次
  4. [a-z]{,5} 匹配小写字母字符 最多5次

3. 小括号( ), 表示一个子表达式

字符串: hello world!!
js正则表达式: /(ell)/g
匹配到的内容是: h ell o world!!
此处注意, 如果字符串是helo 则是匹配不到任何内容的
小括号中的内容是一个完整的正则表达式

  1. (ha){2} 匹配 内容为haha
  2. ((ha){2} hello) 匹配到的内容为: haha hello
  3. (a | b){2} 能够匹配到的内容为 aa bb ab ba

子表达式可以很复杂, 这样多个子表达式组合起来, 可以匹配出规则很复杂的字符串

补充

(?=), (?!), (?<=), (?<!) 这四种写法属于含义比较特殊的子表达式, 为预查表达式 和 ( ) 的含义有所不同
后面会再写一篇来详细解读预查表达式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值