01. 可以干什么?
- 匹配模式
- 匹配字符
- 匹配位置
02. 模糊匹配-横向匹配
待匹配的字符长度不固定,关联概念为量词({m,n}),表示某个字符重复出现m~n次后被命中。
正则:/hel{1,2}o/gm
说明:待匹配的字符串内容命中规则为he
和o
中间包含最少1个l
和做多2两个l
。
匹配正例:helo
hello
匹配反例:heo``helllo
03. 模糊匹配-纵向匹配
待匹配的位字符串内容不固定,关联概念为字符组([abc]),表示某个位置出现的字符为给定返回中的一个后被命中。
正则:/ab[0-9]cd/gm
说明:待匹配的字符串内容命中规则为ab
和cd
中间包含一个数字。
匹配正例:ab1cd
匹配反例:abbcd
ab12cd
04. 认识字符组
我们需要命中的字符在一个范围内的表示方法是:
- 指定几个,如:[abc]。
- 指定范围,如:[0-9],[a-z],[A-Z]。
- 包含特殊符号,如:[-ab],[ab-],[A-Z],均表示需要命中的内容为两个字符和
-
其中一个即可。
我们需要命中的字符不在这个范围内的表示方法是(使用^
脱字符标记):
- 非指定几个,如:[^abc]。
- 非指定范围,如:[^0-9],[^a-z],[^A-Z]。
字符组简写表:
简写 | 范围表示 | 说明 |
\d | [0-9] |
匹配数字 |
\D | [^0-9] |
匹配非数字 |
\w | [0-9a-zA-Z_] |
匹配单词字符 |
\W | [^0-9a-zA-Z_] |
匹配非单词字符 |
\s | [ \t\v\n\r\f] |
匹配空白符,空格,水平/垂直制表符,回车,换行,换页 |
\S | [^ \t\v\n\r\f] |
匹配非空白符 |
. | [^\n\r\u2028\u2029] | 匹配非回车,换行,行分隔符,段落分隔符 |
仔细看一下这几个单词,你一定能一次性全记住。我们通常会使用[\w\W]
来表示任意字符,当然[\d\D],[\s\S],[^]也都可以,有的情况可以用.
来充当任意字符💀。
05. 认识量词
量词决定了我们字符要被命中的次数。
量词(贪婪) | 表示 | 量词(惰性) |
{m,n} | 表示最少命中m次,最多命中n次。 | {m,n}? |
{m,} | 表示最少命中m次。 | {m,}? |
{m} | 表示命中次数为m次。 | {m}? |
? | 表示命中一次或者不命中。 | ?? |
+ | 表示至少命中1次。 | +? |
* | 表示命中任意次数,可以不命中。 | *? |
贪婪模式:越多越好,多多益善。
惰性模式:够用就好,知足常乐。
上表中的图示:
06. 认识管道符|
:
命中给的的模式中的一种即可,需要注意的是正则中的管道符也为惰性匹配,够用就好。
可以看到,似乎最符合的是右边的helloworld
,但是优先命中左边的hello
后就停止了,那我们想要匹配到最想要的那个怎么办呢,看下图后先思考一下🤔。
字符匹配我们就先学到这,赶紧抄起以前代码中的正则用下面的工具试试看吧,XDM🤭。