从你提供的图片来看,这段正则表达式在小程序 wxs 里报错的原因可能是因为在正则表达式中使用了字符转义。在正则表达式中,反斜杠 "" 是一个特殊字符,它用于引入特殊字符序列。例如,"\d" 匹配任何数字,"\n" 匹配换行符。当你想在正则表达式中使用一个实际的反斜杠字符时,你需要使用两个反斜杠进行转义,即 "\"。
你的正则表达式中 "/(\d{3})(\d{4})(\d{4})/" 的括号都是用反斜杠进行转义的,而在 wxs 中可能不支持这种转义方式。
正确的正则表达式应该是:/^(\d{3})(\d{4})(\d{4})$/。注意,我没有看到你的正则表达式中有开始的 "^" 和结束的 "$",这可能也是错误的原因之一。
所以,你可以尝试修改你的代码如下:
// utils.wxs
var formatPhone = function (val) {
if (val) {
const matches = /^\d{3}\d{4}\d{4}$/.exec(val)
if (matches) {
return matches[1] + ' ' + matches[2] + ' ' + matches[3]
}
}
return val
}
以上修改后的代码应该可以解决你的问题。
报错已经提示了
/
这个符号出的问题, 因为wsx不支持使用正则表达式字面量写法wxs正则需要调方法:
官方文档