Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 负货币格式的正则表达式-2特殊位置&;可以变成负数_Javascript_Regex - Fatal编程技术网

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}/);
  }
});