🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 正则菜单指令编写(简单版本) ~~~ 数字:\d 数字长度m-n:\d{m,n} 任意字符:. 空白字符(如空格):\s 匹配次数:零次及以上:* 至少匹配一次:+ 示例: 匹配QQ号,一般QQ号的长度为5到12位的数字,则可以用:\d{5,12} 匹配一句话,一句话可以保护任意字符:.+ 如何提取指令中的内容: 1.如别人发指令:打劫672441357,如何提取出其中的qq号呢?菜单中的指令可以这么写:打劫(\d{5,12}) 。可以看出指令里多了一个括号,这个括号就表示里面所匹配的内容是我们要提取的,当别人在群里发送:打劫672441357,我们就可以在菜单回复处用$-1来提取这个qq号。($表示提取内容,负号表示提取的内容来自指令,编号1表示提取第一个参数)。 ~~~ ### 2.你希望群里面发送“打劫672441357”或者“抢劫672441357”都能同时匹配一个指令,如何做? ~~~ 正确指令编写:(?:打劫|抢劫)(\d{5,12}) 这一步就比较复杂,可以看出“打劫”和“抢劫”用符号|分隔,然后外面套了一个括号,而括号的最前面有个“?:”,前面提到打括号是为了提取出括号里面的内容,而括号里的最前面加上“?:”就表示不提取括号里面的内容。这看起来很矛盾,其实不然。这样做是为了将“打劫”与“抢劫”这两个名词合在一起,表示随便哪一个都可以的意思。 如果你写“打劫|抢劫(\d{5,12})”,这个正则指令会匹配“打劫” 或者 “抢劫672441357”之类的内容。加上括号后就可以匹配:“抢劫672441357”或“打劫672441357”。 ~~~