其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

正则表达式 01到10之间的数字

GG网络技术分享 2025-03-18 16:14 3


问题描述:

正则表达式 01到10之间的数字
正则表达式 01到10之间的数字
正则表达式 01到10之间的数字

网友观点:

/^(([0-9]|10).\\d{2}|0|10)$/

非常感谢大神 再问一条 只能是 0,01,02,03,04,05,06,99 数字的

/^(?:0[1-6]?|99)$/

我在搜这个问题的时候,找到的都不是我应用的场景,找到的都是应用于仅仅以数字开头和结尾的情景。我想实现匹配一段字符串中的1~10(且在1~10前后有别的数字的情况都不算),测试了很多次(在python测试),这个写法是可以实现的:


(?<!\\d)([1-9]|10)(?!\\d)

正则表达式总结

正则表达式总结

最近公司培训,这周四的培训主题就是“鬼斧神工之正则表达式-施**”。对于正则表达式早有所了解,但是不够系统,真正业务上要用时,还是重度依赖百度,对百度出来的答案,是否完全符合自己的需求就不得而知。而且看 Linux 组的大佬崇**在 vim 中搜索文本经常使用正则去搜,确实效率很高。除此之外,在平时用 less 命令去查日志时,自己都是直接查询子串,然而有的时候,这种直接查询需要查询多次才能得到自己想要的日志,如果可以熟练使用正则,效率一定会翻倍。还有不管是 IDEA 还是 VsCode,在做搜索时都是支持正则搜索的,比如在 IDEA 中 Command + Shift + F 或 Command +Shift + R 做全局搜索或替换使用正则都是非常方便的。所以提前准备起来,找了本《正则表达式必知必会》学习起来,此处做一笔记。

基本

  • 正则表达式区分字母大小写
  • . 字符可以匹配任意单个字符、字母、数字、空格甚至是 . 字符本身。但在绝大多数正则表达式实现里,. 不能匹配换行符
  • \\ 用于转义
  • \\. 匹配字符 . 本身
  • \\\\ 匹配字符 \\

字符区间

  • [abc] 匹配字符 abc
  • [0-9] 等价于 [0123456789]
  • [a-z] 等价于 [abcdefghijklmnopqrstuvwxyz][A-Z] 等价于 [ABCDEFGHIJKLMNOPQRSTUVWXYZ][A-z] 等价于 [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz](按照 Ascii 顺序),[A-Za-z0-9] 等价于 [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]

很多程序员喜欢把一个字符也定义为一个字符区间,如 [a] 等价于 a[\\r]? 等价于 \\r?,但前者可以避免产生误解、增加可读性,所以建议一个字符也定义为字符区间

排除

  • [^a-c] 排除 abc

空白字符

  • [\\b] 匹配回退(并删除)一个字符(Backspace 键)
  • \\f 匹配换页符
  • \\r 匹配回车符
  • \\n 匹配换行符
  • \\t 匹配制表符(Tab 键)
  • \\v 匹配垂直制表符

在 Unix 或 Linux 上使用 \\n 匹配行尾标记,Windows 上使用 \\r\\n 匹配行尾标记

特定字符类型

  • \\d 匹配任何一个数字字符,等价于 [0-9]
  • \\D 匹配任何一个非数字字符,等价于 [^0-9]
  • \\w 匹配任何一个字母(大小写均可)或数字类型或下划线字符,等价于 [A-z0-9_]
  • \\W 匹配任何一个非字母(大小写均可)或数字类型或下划线字符,等价于 [^A-z0-9_]
  • \\s 匹配任何一个空白字符,等价于 [\\f\\r\\n\\t\\v ],注意包含空格
  • \\S 匹配任何一个非空白字符,等价于 [^\\f\\r\\n\\t\\v ]

转义

  • .[]\\+*?() 等具有特殊含义的符号被称为元字符,如果要匹配元字符,则需要对元字符进行转义,如 \\. 匹配字符 .\\[ 匹配字符 [\\] 匹配字符 ]\\\\ 匹配字符 \\
  • / 字符并不是元字符,在绝大多数正则表达式解析器中如果要匹配字符 / 并不需要转义,但有些解析器却要求必须转义才能够匹配,所以建议总是在需要匹配字符 / 时对其进行转义,即使用 \\/ 匹配字符 /,这样在所有解析器中都能够正常工作
  • .+ 这样的元字符出现在字符区间内部时,将会被解释为普通字符,可以不用转义,如 [\\w\\.] 等价于 [\\w.],但为了防止误解,建议显示转义

重复匹配

  • + 元字符匹配一个或多个字符,如 a+ 匹配一个或多个连续的 a[0-9]+ 匹配一个或多个连续的数字
  • * 元字符匹配 0 个或多个字符
  • ? 元字符匹配 0 个或 1 个字符
  • {n} 重复匹配 n 次
  • {m,n} 重复匹配 m ~ n 次,如 {0,1} 表示最少匹配 0 次,最多匹配 1 次,等价于 ?
  • {m,} 重复匹配至少 m 次
  • *+ 是贪婪型元字符,它们会尽可能地从一段文本的开头一致匹配到末尾,而不是碰到一个匹配时就停止,如果想要碰到第一个匹配时就停止,则应该使用元字符对应的懒惰型。* 元字符对应的懒惰型为 *?+ 元字符对应的懒惰型为 +?。如想要匹配 HTML <b> 标签中的文本,贪婪型正则如下:

标签:

提交需求或反馈

Demand feedback