0

我有一个文本输入字段,用户只能输入一个双精度。我已经成功地使用 jquery 来实现这一点,但是对正则表达式没有太多经验我不确定我正在使用的正则表达式(它使用多个 OR)是否是一种很好的方法。我花了很多时间试图获得一个简单的正则表达式,但我没有成功。这是我最后使用的。

这是我正在使用的功能:

$('#foo').keyup(function(){
    var str = $(this).val();
    if(/(^\.+$)|(^\d+$)|(^\d+\.$)|(^\.\d+$)|(^\d+\.\d+$)/.test(str)){
        $('#foosays').text(str);
    }else{
        $("#foo")[0].value="";
    }
});

这是我的函数的演示:http: //jsfiddle.net/Esfsy/

欢迎提出任何改进正则表达式或其他任何建议的建议。

4

2 回答 2

3

您可以像这样简化它:

http://jsfiddle.net/Esfsy/3/

$('#foo').keyup(function(){
    var str = $(this).val();
    if(/^-?(\d*\.)?\d*$/.test(str)){
        $('#foosays').text(str);
    }else{
        $("#foo")[0].value="";
    }
});
于 2013-05-07T22:12:29.640 回答
1
$('#foo').keyup(function(){
    var str = $(this).val();
    if( +str || str==='0'){ // validates as a number
        $('#foosays').text(str);
    }else{
        $("#foo")[0].value="";
    }
});
于 2013-05-07T22:10:13.017 回答