Javascript 负货币格式的正则表达式-2特殊位置&;可以变成负数
我有一个输入,在输入更改时,我将其更改为货币格式Javascript 负货币格式的正则表达式-2特殊位置&;可以变成负数,javascript,regex,Javascript,Regex,我有一个输入,在输入更改时,我将其更改为货币格式 <input type="number" class="currency" step="0.01"> 然而,由于每次按键都会触发,所以我不能将“-”作为第一个字符;因此,我一单击“-”它就会将其删除 我可以使用什么样的正则表达式来允许这样做 -这是一个小提琴,尝试写一个负数,它不允许你写。当“数字”输入触发输入事件时,收到的值为空 $('input[type="number"].currency').on('input', fun
<input type="number" class="currency" step="0.01">
然而,由于每次按键都会触发,所以我不能将“-”作为第一个字符;因此,我一单击“-”它就会将其删除
我可以使用什么样的正则表达式来允许这样做
-这是一个小提琴,尝试写一个负数,它不允许你写。当“数字”输入触发输入事件时,收到的值为空
$('input[type="number"].currency').on('input', function(e) {
if (e.target.value.length !== 0) {
this.value = this.value.match(/^-?\d+\.?\d{0,2}/);
}
});
我添加了一个这样的保护,效果很好。您的正则表达式需要一个减号和至少一个数字,所以实现这种输入的唯一方法是粘贴它。问题在于您对事件侦听器的使用,而不是正则表达式。这归结为用户体验问题。不要无意识地“修复”他们的问题,只是警告用户他们的输入错误并阻止提交。我也希望能够接受负值-我可以确认,当我按下“-”时,它进入输入事件。我认为这是正则表达式的问题
$('input[type="number"].currency').on('input', function(e) {
if (e.target.value.length !== 0) {
this.value = this.value.match(/^-?\d+\.?\d{0,2}/);
}
});