用零 0 替换 alphabets/spaces 的正则表达式

Regular Expression to replace alphabets/spaces with zero 0

<input type="number" min="1"  onkeyup="this.value=this.value.replace(/[^\d]/,'')"name="Qty[]" placeholder="Qty" value="0">

这是我的 html 输入,使用这个正则表达式我可以替换所有字母。输入被消隐。 虽然我试过像这样输入零

onkeyup="this.value=this.value.replace(/[^\d]/,'0')"

但它不会用零代替它。上面提供的表达式也替换了整个字符串,而我想输入 '1234a' 它只是删除 'a' 。所以任何人都可以告诉我如何用 0 替换整个字母表或者只是从输入中删除字母表。

示例输入: 1234a

预期产出: 0 或 1234

之所以如此,是因为您无法使用 this.value 获得 input[type=number] 的原始值,除非它是一个数字。在任何其他情况下,它将 return 一个空字符串。参见 How to get the raw value an <input type="number"> field?

相反,您可以使用文本输入类型,即

<input type="text" min="1"  onkeyup="this.value=this.value.replace(/[^\d]/g,'0')"name="Qty[]" placeholder="Qty" value="0">

这是fiddle:http://jsfiddle.net/jcs2zh5e/

此外,您还缺少全局修饰符,如果用户 pastes 某些值进入该字段,这会导致正则表达式不替换所有字母而只替换第一个字母。为了解决这个问题,添加了 g.