正则表达式为整数,整数或浮点

时间:2016-05-20 18:44:43

标签: javascript regex

我想使用正则表达式验证文本框中的条目。 模式应该是

integer, integer or float

所以有效的条目可以是

1234, 1234
123, 123.45

和无效条目将

abd, 123
123, abc
abc, abc

到目前为止我已经尝试了

var entry = "123,123.4" 
var patt = new RegExp("^[0-9]+,(?:[\d+(\.\d+]+,?){0,1}$");
res = patt.test(entry);  

但它返回false,但它应该返回true

5 个答案:

答案 0 :(得分:2)

好像你混淆了你的正则表达式的第二部分了。 ^\d+,\s*\d+(?:\.\d+)?$应该是您所需要的。

这是一个Regex101样本。

  • \d+匹配一个或多个数字(整数)
  • ,\s *匹配逗号,后跟空格
  • \d+(?:\.\d+)?匹配一个或多个数字,可选地后跟一个点和一个或多个数字(整数或浮点数)

注1:这与负数不匹配。如果需要,您可以将正则表达式调整为^-?\d+,\s*-?\d+(?:\.\d+)?$

注意2:这不会将.1与浮点数匹配,浮点数可能是有效的浮点数。如果需要,您可以将正则表达式调整为^\d+,\s*(?:\d+|\d*\.\d+)$

答案 1 :(得分:1)

首先用“,”

分割字符串
var entry = "123,123.4";
var entryArray = entry.split(',');

然后使用我从link

获得的以下函数检查entryArray项目
function isFloat(n) {
    return n === +n && n !== (n|0);
}

function isInteger(n) {
    return n === +n && n === (n|0);
}

这是完整的食谱

function isFloat(n) {
    return n === +n && n !== (n|0);
}

function isInteger(n) {
    return n === +n && n === (n|0);
}

function isValidInput(input){
    if (!input) {return false};
    var inputArray = input.split(',');
    inputArray = inputArray.map(function(item){
        return item.trim();
    })
    inputArray = inputArray.filter(function(n){
        var number = parseFloat(n);
        return number && (isInteger(parseFloat(n)) || isFloat(parseFloat(n)) )
    })
    return (inputArray.length === 2)
}
isValidInput("55,55.44");

答案 2 :(得分:0)

^\d+,\s?\d+\.?\d*$

将有效

1234, 1234
123, 123.45

无效

abd, 123
123, abc
abc, abc

答案 3 :(得分:0)

用这个替换你的regExp:

var reg = new RegExp("^[0-9]+,[0-9]+.?[0-9]*");

我认为这就是你想要的。

以逗号后接受空格:

var reg = new RegExp("^[0-9]+, [0-9]+.?[0-9]*");

对于1a的情况,最后需要ad $

答案 4 :(得分:0)

尝试这个:

^(?:\d{1,3})(?:\.\d{1,2})?$

652.16有效

.12无效

511.22有效

1.23有效

12.3有效

12.34有效