在MiniMax Code中编写正则表达式,首先要明确它支持的语法规范。很多人习惯直接套用Python或JavaScript的写法,结果编译报错,或者匹配结果完全不符合预期。核心要点其实很简单:必须使用PCRE2 10.42+的语法,以/开头和结尾,支持(?x)扩展模式和p{Han}匹配中文,但Python、JS的那些花哨写法以及$2以上的反向引用,统统不被支持。

因此,第一步是确认你的引擎版本是否正确。在MiniMax Code编辑器里,点击右上角「设置」→「运行环境」,找到「Regex Engine」字段,检查是否显示为【PCRE2 10.42+】。如果版本低于这个,像(?这种后顾断言,或者p{L}这类Unicode属性,可能就无法使用。另外,所有正则表达式都必须以/开头和结尾,不要尝试用r''或re.compile()——那是Python的习惯,这里不认。
编写一个能匹配中文手机号的正则表达式
这里提供两种方法,简单直接。
方法一:基础11位纯数字校验,适合快速过滤:
/^1[3-9]d{9}$/
直接把这个表达式粘贴到MiniMax Code的正则输入框中即可生效,没有复杂的弯弯绕。
方法二:增强版——排除号段黑名单,同时支持空格或短横线分隔:
/^1(?:[3-9]d{9}|[3-9]d{1,2}[-s]?d{4}[-s]?d{4})$/
注意:MiniMax Code默认不开启x修饰符,所以你不能换行书写,也不能加注释。所有空格和短横线都必须显式写出,否则会被当成字面量匹配——这一点容易踩坑。
生成可读性强的多行匹配规则
如果你想让正则表达式更清晰,可以使用(?x)启用扩展模式,这样就能换行并添加注释了。具体分三步:
第一步:在正则开头插入(?x),例如:(?x)^1[3-9]d{9}$。
第二步:拆分成多行,并添加注释(注意这里的缩进和换行都是有意义的):
(?x)
^ # 行首锚点
1[3-9] # 首位1,第二位3-9
d{9} # 后续9位数字
$ # 行尾锚点
第三步:将整段文本(包括换行和井号注释)复制粘贴到MiniMax Code的正则输入框。必须保留所有换行符和注释,且末尾不能有多余的空行,否则PCRE2解析会报PCRE2_ERROR_BADUTF错误。
调试匹配失败的常见原因
输入测试字符串后没有高亮?先检查是否漏写了^或$,导致跨行匹配溢出。
部分中文字符无法匹配?确保正则里使用的是p{Han},而不是[u4e00-u9fa5]。后者在MiniMax Code中因UTF-8编码处理差异,可能会漏掉扩展A/B区的汉字——这个坑相当隐蔽。
替换结果出现乱码?替换字符串中只能使用$1,$2及以上的反向引用在MiniMax Code中尚未支持,用了就会乱码。
