最近在用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])/
很好!这样应该就可以了吧?
输入到正则表达式工具内之后,我发现我想的还是太少
如果是两位数,那就会只匹配了开头,并不是如预期的那样匹配一整个28
。
一番搜索之后,发现可以在前后加上\b
解决,/\b([1-9]|1[0-9]|2[0-8])\b/
\b
可以表达为词边界,它会检查字符串中的位置是否是词边界,可以匹配一个一个的整体。