Javascript Regex不在google chrome上工作

Javascript Regex不在google chrome上工作,javascript,regex,google-chrome,Javascript,Regex,Google Chrome,我有一个正则表达式: function removeNonGold(input){ var price = input.value var id = input.id price = price.replace("^?\d+(\.\d{1})?",'') document.getElementById(id).value = price } 在该输入字段上工作的: <input class="form-control" onkeyup="removeNon

我有一个正则表达式:

function removeNonGold(input){
    var price = input.value
    var id = input.id
    price = price.replace("^?\d+(\.\d{1})?",'')
    document.getElementById(id).value = price
}
在该输入字段上工作的:

<input class="form-control" onkeyup="removeNonGold(this)" min="0.01" step="0.01" lang="nb" type="number" name="service[promote_price]" id="service_promote_price">

它应该删除任何不是数字或点的字符


它在Safari和Firefox上运行良好,但在chrome上会不断删除圆点。

您应该为正则表达式使用字符集
[^\d.]
。这将根据需要匹配“任何不是数字或点的字符”。以下是使用方法:

price = price.replace(/[^\d.]/g, '');

这不是一个RegExp,这是一个字符串…您想要
price=price.replace(/^?\d+(\。\d{1})/,“”)
。。。除非
price
不是字符串,而是您创建的具有特定替换功能的某个对象。尽管如此,上述输入默认情况下不允许在chrome中进行非数字输入,所以我不明白问题出在哪里。如果这在Safari和Firefox中起作用,我会非常惊讶。你可以尝试下面的正则表达式:。即使使用这个正则表达式,当我键入一个点时,也会让一切变得轻松。