我的正则表达式为onkeyup="this.value=this.value.replace(/[^aA0-9 +]/g,'');
这是只允许字符串带有'+'符号的数字,即1 + 2 + 3
我具有+的组合功能。 但是在某些情况下,它允许使用示例“ +1”以及“ 1 ++ 3 +”或“ +++ 4 + 5”。
如何防止在键入事件时重复出现“ +”以及在以“ +”开头时如何使用,以使我的功能正常工作。
任何建议。 谢谢。
答案 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"/>