我写了一个函数,该函数具有从stackoverflow问题Allowing only numbers and one decimal的可接受答案中提取的正则表达式
function allowDecimal(field) {
setTimeout(function() {
var regex = /\d*\.?\d?/g;
field.value = regex.exec(field.value);
}, 0);
}
<br>For input say 2.5, chrome will give 2.5 while firefox will give 25<br>
<input type="number" onkeyup='allowDecimal(this);' id="baths" name="baths">
应该只接受数字,一个小数点和十进制后的一个数字。 该表达式在Chorome中运行良好,但在Firefox中失败。 对于输入2.5,在Chorome中,其显示为2.5,但在Firefox中,它会删除点并给出25。 表达式有什么问题?
答案 0 :(得分:2)
似乎是您使用?
导致的。添加?
使前面的字符(或字符集)成为可选。如果您想匹配“仅接受数字,一个小数点和十进制后一个数字。”,则表达式将更像这样:
/\d+\.\d/g
可以理解为“一位或多位数字,文字'。',一位数字,全局查看”。