[英]Regex for pattern integer,integer or float
我想使用正则表达式验证文本框中的条目。 图案应该是
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
似乎您混淆了正则表达式的第二部分。 ^\\d+,\\s*\\d+(?:\\.\\d+)?$
应该是你需要的。
这是一个Regex101示例。
\\d+
匹配一位或多位数字(整数),\\s
* 匹配逗号,可选后跟空格\\d+(?:\\.\\d+)?
匹配一位或多位数字,可选后跟一个点和一位或多位数字(整数或浮点数) 注1:这不会匹配负数。 如果需要,您可以将正则表达式调整为^-?\\d+,\\s*-?\\d+(?:\\.\\d+)?$
注意2:这不会匹配.1
作为浮点数,这可能是一个有效的浮点数。 如果需要,您可以将正则表达式调整为^\\d+,\\s*(?:\\d+|\\d*\\.\\d+)$
。
第一个用“,”分割字符串
var entry = "123,123.4";
var entryArray = entry.split(',');
然后只需使用我从链接中获得的以下函数检查 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");
用这个替换你的regExp:
var reg = new RegExp("^[0-9]+,[0-9]+.?[0-9]*");
我想这就是你想要的。
接受逗号后的空格:
var reg = new RegExp("^[0-9]+, [0-9]+.?[0-9]*");
对于 1a 的情况,最后需要添加 $
^\d+,\s?\d+\.?\d*$
将有效于
1234, 1234
123, 123.45
和无效到
abd, 123
123, abc
abc, abc
试试这个:
^(?:\d{1,3})(?:\.\d{1,2})?$
652.16 有效
.12 无效
511.22 有效
1.23 有效
12.3 有效
12.34 有效
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.