防止在按键上同时出现重复的“ +”字符

时间:2018-10-11 06:03:48

标签: javascript jquery

我的正则表达式为onkeyup="this.value=this.value.replace(/[^aA0-9 +]/g,''); 这是只允许字符串带有'+'符号的数字,即1 + 2 + 3

我具有+的组合功能。 但是在某些情况下,它允许使用示例“ +1”以及“ 1 ++ 3 +”或“ +++ 4 + 5”。

如何防止在键入事件时重复出现“ +”以及在以“ +”开头时如何使用,以使我的功能正常工作。

任何建议。 谢谢。

2 个答案:

答案 0 :(得分:1)

使用Javascript正确连接事件侦听器,然后您可以通过匹配\++(字面加号,重复)并用+替换单个加号中的多个加号。另外请注意,字符集中的0-9会减少为\d,这样会更易于阅读:

element.addEventListener('keyup', function() {
  this.value = this.value
    .replace(/[^aA\d +]/g,'')
    .replace(/\++/g, '+');
});

您可能还想检查加号周围的空格,以避免出现a+ +a。如果是这样,那么您可以使用:

.replace(/ *\+[ +]/g, ' + ')

这将替换可选的空格,后跟一个加号,再加上加号和空格的任意组合,其中单个加号的两侧各有一个空格。 (当然,如果需要,也可以单独用加号代替,而不能使用空格)

答案 1 :(得分:1)

var element=document.getElementById("txtSum");
element.addEventListener('keyup', function() {
  this.value = this.value
    .replace(/\s/g, '') // Removes space
    .replace(/^\++/g, '') // Remove begining with +
    .replace(/[^aA\d +]/g,'') 
    .replace(/\++/g, '+'); // Replace multiple +
   
});
<input type="text" id="txtSum"/>