js 正则表达式动态变量拼接

.replace(/^(\-)*(\d+)\.(\d{2}).*$/, '$1$2.$3')
打算封装一个动态保留小数位数的方法,通过传进参数来达到。
正则表达式中的(d{2}) 这里面的2 怎么可以通过传进来的变量进行拼接呢

阅读 12.7k
2 个回答

用RegExp可以拼接字符串:但要多加‘\’再转义一次,应为RegExp会认为第一个反斜杠是转义而不是字符串。replace也会做同样的判断。
不加\,new RegExp(^(\-)*(\d+)\.(\d{${num}}).*$)之后会变成/^(-)(d+).(d{2}).$/,没有了转义,replace无法正确识别。

function run(cont,num){
    return cont.replace(new RegExp(`^(\\-)*(\\d+)\\.(\\d{${num}}).*$`),  '$1$2.$3');

}

可以用 toFixed

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题