Javascript如何在脚本中允许删除除数字之外的所有内容?

时间:2015-08-31 05:18:26

标签: 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.substr(0,o.value.length-1).replace(/^\s+|\s+$/,'');
    }
};

你也看到有没有更有效的方法来编写这段代码?可以对它进行任何优化吗?我只想允许输入数字和句点。提前谢谢。

2 个答案:

答案 0 :(得分:0)

您最有可能希望使用此正则表达式匹配数字和句点:/(\.\d)*/

来源:String.prototype.match https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/match

上的MDN页面

答案 1 :(得分:0)

此行修剪字符串末尾的beginnig 处的空格,并将其分配给v:

v=o.value.replace(/^\s+|\s+$/,'');

此行将v的最后一个符号分配给v:

v=v.substr(v.length-1);

此esxpression检查此最后一个符号是否不是数字:

v.match(/\d/g)==null

如果它不是一个数字,它会使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\.]$/);
}

如果您想删除最后一个符号(如果它不是数字):

function removeNotDigit(input) {
    if (!endsWithDigit(input) {
        return input.replace(/.\s*$/, '');
    } esle {
        return input;
    }
}

或者你可以在没有明确检查的情况下编写最后一个函数:

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