MOXUY

Apr 26, 2023

匹配1-28数字的正则表达式

最近在用MockJS处理接口数据,遇到一个需求,需要返回一个视频链接,有28个视频,视频名依次从1到28命名,例如”http://192.168.0.90:7478/22.mp4"

MockJS中提供了正则表达式的方式mock数据,返回上面这条链接可以使用/http\:\/\/192\.168\.0\.90\:7478\/22\.mp4/ 这样的表达式,但是如果想要返回1-28的视频链接,需要对22进行处理

一开始想到的是/[1-28]/,以为这样就能达到目的的,但事实证明想的还是太少😂。

/[1-28]/只会匹配1、2、8,这三个数字,可以拆开这样理解/([1-2]|8)/

所以想要匹配1-28,需要每一位去匹配,/([1-9]|1[0-9]|2[0-8])/

很好!这样应该就可以了吧?

输入到正则表达式工具内之后,我发现我想的还是太少
202304261755326.png?raw=true

如果是两位数,那就会只匹配了开头,并不是如预期的那样匹配一整个28

一番搜索之后,发现可以在前后加上\b解决,/\b([1-9]|1[0-9]|2[0-8])\b/
202304261759420.png?raw=true

\b可以表达为词边界,它会检查字符串中的位置是否是词边界,可以匹配一个一个的整体。

OLDER > < NEWER