Javascript如何允许脚本中的句点删除除数字以外的所有内容?

Javascript如何允许脚本中的句点删除除数字以外的所有内容?,javascript,Javascript,这是我想要的代码。被允许进入。现在的代码只允许数字。为了让这种情况发生,需要改变什么 function check(o) { v=o.value.replace(/^\s+|\s+$/,''); // remove any whitespace if(o=='') { return; } v=v.substr(v.length-1); if(v.match(/\d/g)==null) { o.value=o.value.su

这是我想要的代码。被允许进入。现在的代码只允许数字。为了让这种情况发生,需要改变什么

function check(o)
{
    v=o.value.replace(/^\s+|\s+$/,''); // remove any whitespace
    if(o=='') {
        return;
    }
    v=v.substr(v.length-1);
    if(v.match(/\d/g)==null) {
        o.value=o.value.substr(0,o.value.length-1).replace(/^\s+|\s+$/,'');
    }
};

另外,您是否看到有更有效的方法来编写此代码?可以对其进行任何优化吗?我只想只允许输入数字和句号。提前感谢。

您很可能希望使用此正则表达式匹配数字和/或句点:/\。\d*/


来源:String.prototype.match上的MDN页面

这一行修剪字符串开头或结尾的空白,并将其分配给v:

v=o.value.replace(/^\s+|\s+$/,'');
此行将v的最后一个符号分配回v:

v=v.substr(v.length-1);
此esxpression检查最后一个符号是否不是数字:

v.match(/\d/g)==null
function removeNotDigit(input) {
    if (!endsWithDigit(input) {
        return input.replace(/.\s*$/, '');
    } esle {
        return input;
    }
}
如果它不是一个数字,它会使o.value有它的值,但会被修剪,并且没有最后一个数字

o.value=o.value.substr(0,o.value.length-1).replace(/^\s+|\s+$/,'');
如果您询问此代码的效率,首先从代码的可读性和可支持性的角度来看,它不是有效的。因为尽管函数名为“check”,它做了很多不同的事情,除了返回检查结果

如果要检查输入的最后一个非空白符号是否为数字/点,则函数为:

function endsWithDigit(input) {
   return input.trim().match(/[0-9\.]$/);
}
如果要删除不是数字的最后一个符号,请执行以下操作:

v.match(/\d/g)==null
function removeNotDigit(input) {
    if (!endsWithDigit(input) {
        return input.replace(/.\s*$/, '');
    } esle {
        return input;
    }
}
或者您可以只编写最后一个函数而不进行显式检查:

function removeNotDigin(input) {
    return input.replce(/[0-9\.]\s*$/, '');
}

可能是重复到:嗯,您可以使用trim删除前导和尾随空格。将正则表达式更改为允许句点?上述代码不会删除。那么问题是什么呢?欢迎您亲自尝试,我应该用ifv.match/\d/g==null替换为ifv.match/\。\d*/==null?现在似乎可以输入字母了。