mac uniapp vue3 微信小程序syntaxerror: invalid regular expression: /[\p{l}_] 如何解决?

在Mac系统下使用Uniapp和Vue3开发微信小程序时,遇到正则表达式错误:“SyntaxError: Invalid regular expression: /[\p{l}_]”,这个错误该如何解决?

2 回复

在微信小程序中不支持\p{l}正则语法。解决方案:

  1. 改用[a-zA-Z_]匹配字母和下划线
  2. 或使用[a-z_] + i标志忽略大小写
  3. 如需支持Unicode字符,改用[a-zA-Z\u4e00-\u9fa5_]包含中文字符

例如:/[\w\u4e00-\u9fa5]/


这个错误是因为微信小程序的 JavaScript 引擎不支持正则表达式中的 \p{l} Unicode 属性转义。

解决方案:

  1. 使用 Babel 转译vue.config.js 中配置:
module.exports = {
  transpileDependencies: ['@dcloudio/uni-ui'] // 如果需要的话
}
  1. 替换正则表达式[\p{l}_] 替换为兼容的写法:
// 原来的(不支持)
const regex = /[\p{l}_]/

// 替换为(兼容写法)
const regex = /[a-zA-Z_]/
// 或者如果需要支持更多字符
const regex = /[a-zA-Z\u00C0-\u017F_]/
  1. 安装 core-js 如果问题来自依赖包:
npm install core-js

然后在 main.js 中引入:

import 'core-js/stable'
  1. 检查第三方库 如果是第三方库引起的,尝试:
    • 更新到最新版本
    • 寻找替代库
    • 联系库作者修复

推荐做法: 优先使用方案 2 直接替换正则表达式,这是最彻底的解决方法。如果问题来自依赖包,再考虑使用 Babel 转译。

检查你的代码中是否有使用 \p{l} 的地方,将其替换为兼容的字符类即可解决问题。

回到顶部