.match(/^\d*(\.?\d{0,4})/g)[0] || '',如何将{0,4}里面的数字0,4用变量来代替?

.match(/^\d*(.?\d{0,4})/g)[0] || '',如何将{0,4}里面的数字4用变量来代替把图片里面选中的4换成变量,希望大佬们亲测下
let reg1 = new RegExp(\D(\d*)(\.?)(\d{0, ${numD}})\d*)
let reg2 = new RegExp(^\d*(\.?\d{0, ${numD}}), "g")[0] || ""。
reg1应该写的是对的,但reg2这老是各种错误尤其是[0] || ""这块
最终目的是输入的时候最多只能输入小数点后面4位,图片里是好的,但是想简单封装下,所以想将4变成变量形式.
我这写的也没问题啊,又报这个错本来之前能限制小数点后4位的,好像报错后,也不起作用了

阅读 1.9k
2 个回答
var regItem='\\d{0,4}';
var reg=new RegExp(`\\D*(\\d*)(\\.?)(${regItem})\\d*`);
''.replace(reg,'');

用RegExp去处理就可以了

不使用字面量创建正则,采用new创建正则

const num1 = 0
const num2 = 4
const reg = new RegExp(`\D(\d)(.?)(\d${num1,num2})\d*`)
''.replace(reg,'')

跟上面的回答是一样的

regexp文档说明:https://developer.mozilla.org...

reg2报错的原因是您这边使用错误
let reg2 = new RegExp(^\d*(\.?\d{0, ${numD}}), "g"),^\d*(\.?\d{0, ${numD}}这个应该使用``包裹:
image.png
然后[0]||""不能直接放正则后面,应该这么用:

const numD = 4;
const reg2 = new RegExp(`^\d*(\.?\d{0, ${numD}})`, "g")
' '.match(reg2)[0]||""

这样就不会报错了

1.报错的原因是因为mathch方法前面的正则写的有问题,导致match(regs)正则匹配不上,match方法返回null,然后null[0]报错
image.png
2.目的是输入的时候最多只能输入小数点后面4位,现在您这种方式搞麻烦了
首先限制输入框仅允许输入数字

this.number = Number(this.number).toFixed(4)

image.png
这样即可达成目的,用正则相对变复杂啦

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