JavaScript正则表达式在Firefox中失败

时间:2018-11-07 11:54:45

标签: javascript regex

我写了一个函数,该函数具有从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。 表达式有什么问题?

1 个答案:

答案 0 :(得分:2)

似乎是您使用?导致的。添加?使前面的字符(或字符集)成为可选。如果您想匹配“仅接受数字,一个小数点和十进制后一个数字。”,则表达式将更像这样:

/\d+\.\d/g

可以理解为“一位或多位数字,文字'。',一位数字,全局查看”。