我想使用正则表达式验证文本框中的条目。 模式应该是
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
答案 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有效