我是正则表达式的新手,并希望在正则表达式中只允许加号(+)一次。如果可能,请用简单的词语解释
function number(){
var i = document.getElementById("number");
i.value = i.value.replace(/[^0-9]/+/g,"");
}

<input type="text" id="number" onkeyup="number()" />
&#13;
答案 0 :(得分:2)
由于+
是RegEx中的量词字符,如果您要在字符串中测试文字+
,则必须将其转义:\+
。< / p>
如果您只想用一个加号替换多个加号的序列,可以使用此RegEx:/\++/g
。第一部分\+
是文字+
。第二部分+
是RegEx控件,用于匹配前面的一个或多个。因此,此RegEx将与一个或多个加号匹配,然后以下字符串替换将仅用一个加号替换它。 (1234++
将成为1234+
)
function number(){
var i = document.getElementById("number");
i.value = i.value.replace(/\++/g, '+');
}
&#13;
<input type="text" id="number" onkeyup="number()" />
&#13;
编辑:如果你想删除除第一个以外的所有加号,你可以在.replace函数的第二个参数中使用一个函数,如下所示:
Edit2:您还可以使用空字符串替换+
来删除所有非数字或/[^0-9\+]/g
字符:
function number(){
let first = true;
var i = document.getElementById("number");
i.value = i.value
.replace(/[^0-9\+]/g, '')
.replace(/(\+)+/g, function(match, p1) {
if(first) {
first = false;
return p1;
}
else return '';
});
}
&#13;
<input type="text" id="number" onkeyup="number()" />
&#13;
2+44a5+++444+++
变为2+445444