Products
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]
匹配字符 a
或 b
或 c
,[0-9]
等价于 [0123456789]
[a-z]
等价于 [abcdefghijklmnopqrstuvwxyz]
,[A-Z]
等价于 [ABCDEFGHIJKLMNOPQRSTUVWXYZ]
,[A-z]
等价于 [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]
(按照 Ascii 顺序),[A-Za-z0-9]
等价于 [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
很多程序员喜欢把一个字符也定义为一个字符区间,如 [a]
等价于 a
,[\\r]?
等价于 \\r?
,但前者可以避免产生误解、增加可读性,所以建议一个字符也定义为字符区间
[^a-c]
排除 a
或 b
或 c
[\\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