首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >全网最易懂的正则表达式教程(4)- 范围

全网最易懂的正则表达式教程(4)- 范围

作者头像
小菠萝测试笔记
发布2020-07-03 10:16:43
5000
发布2020-07-03 10:16:43
举报

范围

代码/语法

说明

|

分支条件,或

[...]

字符集合,多选一

[a-z]

指定范围的字符集合

[^...]

取反的字符集合

[...] 字符集合介绍

背景

要想匹配数字,字母,空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如:元音字母 a,e,i,o,u )

解决方案

很简单,你只需要在方括号 [ ] 里列出它们就行了,像 [aeiou] 匹配任何一个英文元音字母, [.?!] 匹配任一个标点符号

重点

[...] 里面写再多的字符集合,最终也只会匹配一个字符,和元字符一样,如果需要重复匹配需要加上限定符

元字符等价的字符集合

元字符

等价语法

\w

[a-zA-Z0-9_]

\W

[^a-zA-Z0-9_]

\s

[\n\t\r\f]

\S

[^\n\t\r\f]

\d

[0-9]

\D

[^0-9]

[...] 的栗子一

正则表达式

\(?0\d{2}[) -]?\d{8}

分析:

  1. 首先是一个转义字符 ,它能出现 0 次或 1 次 ?

\(

  1. 然后是一个 0,后面跟着2个数字

\d{2}

  1. 然后是 或 - 或空格中的一个,它出现 0 次或 1 次 ?

)

  1. 最后是 8 个数字

\d{8}

可匹配到的字符串
  • (010)88886666
  • 022-22334455
  • 02912345678

[...] 的栗子二

正则表达式

[123aA;]

可匹配到的字符串

只能匹配 [ ] 里面的字符

指定范围的 [...] 的栗子一

正则表达式

[\u4e00-\u9fa5]

可匹配到的字符串

任意中文字符

指定范围的 [...] 的栗子二

正则表达式

^\d[a-gA-Z5-9]{2,4}

分析:

  1. 数字开头
  2. a-g 或 A-Z 或 5-9 任取2-4位
  3. 表达式可以等价成:

^[0-9][a-gA-Z5-9]{2,4}

可匹配到的字符串
  • 6aY
  • 6aY7
  • 6aY78
  • 1aY781

[^...] 的栗子

正则表达式

[^abcdA-Z()-=]

分析:

可以匹配非 a、b、c、d、A-Z、( 、) 、- 、= 以外的字符

可匹配到的字符串
  • e
  • f
  • \
  • [

指定范围的 [...] 总结

  • 如果是有指定范围字符集的话,必须按照 ASCII 码的顺序

[a-z]

  • 只能匹配一个字符,除非加了量词(限定符)

[...]

| 分支条件的栗子一

正则表达式

ab|cd|123|.{2}

可匹配到的字符串
  • ab
  • cd
  • 123
  • 菠萝

| 分支条件的栗子二

正则表达式

0\d{2}-\d{8}|0\d{3}-\d{7}

可匹配到的字符串
  • 012-81200111
  • 0333-8120011

| 分支条件的栗子三

两个正则表达式的区别

\d{5}-\d{4}|\d{5} :可以匹配 5 位数字 或 5位数字 - 4位数字

\d{5}|\d{5}-\d{4} :只能匹配 5 位数字

是否有个疑问

明明表达式差不多一样啊,只是前后位置换了下而已,为啥第二种写法只能匹配 5 位数字呢?

答案
  • 因为第二种写法,如果满足 ,那肯定也满足 \d{5}

\d{5}-\d{4}

  • 匹配分支条件时,将会从左到右地测试每个条件,如果满足了某个分支条件的话,就不会再去匹配后面的分支了
  • 所以能匹配上,就不再去测试 \d{5}-\d{4} 是否匹配了

\d{5}

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 范围
  • [...] 字符集合介绍
    • 背景
      • 解决方案
        • 重点
          • 元字符等价的字符集合
          • [...] 的栗子一
            • 正则表达式
              • 可匹配到的字符串
              • [...] 的栗子二
                • 正则表达式
                  • 可匹配到的字符串
                  • 指定范围的 [...] 的栗子一
                    • 正则表达式
                      • 可匹配到的字符串
                      • 指定范围的 [...] 的栗子二
                        • 正则表达式
                          • 可匹配到的字符串
                          • [^...] 的栗子
                            • 正则表达式
                              • 可匹配到的字符串
                              • 指定范围的 [...] 总结
                              • | 分支条件的栗子一
                                • 正则表达式
                                  • 可匹配到的字符串
                                  • | 分支条件的栗子二
                                    • 正则表达式
                                      • 可匹配到的字符串
                                      • | 分支条件的栗子三
                                        • 两个正则表达式的区别
                                          • 是否有个疑问
                                            • 答案
                                            领券
                                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档