我有一个函数,我调用表单输入的输入事件,过滤掉任何不属于浮点数的字符:
return value.replace(/[^0-9\.]/g, '');
尽管如此,它不允许减号。我如何调整它以便它只允许一个可选的初始减号然后是数字(即0到9和。)?我不能完全领先于正则表达式对模式的否定。
稍后:决定最好的办法是在考虑正则表达式之前单独处理任何减号。这就是我所确定的:
function ensureFloatingPoint(value){
let val=value;
if(val==='-') {
return val;
}
let sign="";
if(val.startsWith("-")){
sign="-";
val=val.substring(1);
}
val = val.replace(/[^0-9\.]/g, '');
if(sign){
val=sign+val;
}
return val;
}
这让我觉得过于冗长,但它确实起到了作用。
(这个问题并不重复,因为我要求排除字符,不接受它们。)