我在使用中遇到了问题 match(/.{1,3}/gi)
或 match(\/d{1,3}/g)
将一个字符串分割成3位数的数组。
if(me.iselement(finppnr.inpprice)) {
finppnr.inpprice.addEventListener("keyup", function() {
let raw, ret;
raw = finppnr.inpprice.value.split(".");
raw = raw.join("").toString();
if(raw.length > 0) {
ret = raw.split("").reverse().join("").match(/.{1,3}/gi);
ret = ret.join(".").split("").reverse().join("");
}
finppnr.inpprice.value = ret;
});
}
这里是HTML。
<div class="formcol">
<div class="label">Item Price</div>
<div class="field">
<input class="inpprice finp" type="number">
</div>
</div>
我输入的所有内容 finppnr.inpprice
再大 1.000.000
将返回这样的警告
指定的值 “1.231.231 “不是一个有效的数字,该值必须与以下正则表达式匹配:-? 该值必须与以下正则表达式相匹配:-?(d/d+.{1,3}gi)或match(/d{1,3}g)将一个字符串分割成3个数字数组。if(me.istelement(finppnr.inpprice)) { finppnr.inpprice.addEventListener(“keyup”, function() {…
你的问题不是在regex上,而是你使用了一个叫做 finppnr.inpprice.value
输入,并给它一个值,如 ''
,
ret = "52990000".split("").reverse().join("").match(/.{1,3}/gi);
ret = ret.join(".").split("").reverse().join("");
这根本不是一个有效数字
!
解决方案:
所以,像这样的数字 number
, 52.990.000
、等都是无效的,输入将无法解释,从而呈现。而像999.999这样的数字,则。是
有效,因为 ,
这里只是作为一个小数点。.
总之,你的regex是没有问题的,你的问题是使用数字输入。52,990,000
一个快速的解决方法是换成 52,990.999
输入,它可以显示任意符号。
如果您决定保留 输入,你将不得不找到另一种解决方案,这可能包括定位一个 叠加 .
输入,这样它就能以你期望的方式显示该值。
type="text"