前言

如果下面的看不懂。那么就需要学习下基本知识:正则表达式30分钟入门教程

Level 1

匹配一个空字符串,学习匹配匹配字符串开头结尾的两个符号:/^$/

^ 匹配字符串的开始

$ 匹配字符串的结束

Level 2

匹配”wechall”,/^wechall$/

Level 3

匹配以wechallwechall4为文件名,并以.jpg/.gif/.tiff/.bmp/.png为后缀的图像,

/^wechall4?\.(?:jpg|gif|tiff|bmp|png)$/
? 重复零次或一次

所以4?表示重复0次或1次4,也就是wechall和wechall4都可以匹配。

\. 转义

使用\来取消.字符的特殊意义,来显示.字符本身

(?:jpg|gif|tiff|bmp|png)\

(?:exp)表示非捕获分组,匹配exp,不捕获匹配的文本,也不给此分组分配组号。

为什么要用(?:exp),而不用(exp)呢?因为直接提交/^wechall4?\.(jpg|gif|tiff|bmp|png)$/会报错:

Your pattern would capture a string, but this is not wanted. Please use a non capturing group.
您的模式将捕获一个字符串,但这是不需要的。请使用非捕获组。

所以需要使用(?:exp)非捕获分组。

至于(?:jpg|gif|tiff|bmp|png)\中的|表示分枝条件

Level 4

捕获文件名,需要对文件名添加捕获分组:

/^(wechall4?)\.(?:jpg|gif|tiff|bmp|png)$/

(wechall4?)用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作。


参考:

Wechall WriteUp - 琪琪的博客 | Qiqi's Blog
WeChall Journal | 陈文青