可能重复:
正则表达式匹配文本中带或不带逗号和小数的数字
var regex = /^[0-9][0-9]{0,5}$|^[0-9][0-9]{0,5}[\.][0-9]$/;
有效值为 3,000 30,000 在上面的正则表达式中寻找逗号。我无法得到它
可能重复:
正则表达式匹配文本中带或不带逗号和小数的数字
var regex = /^[0-9][0-9]{0,5}$|^[0-9][0-9]{0,5}[\.][0-9]$/;
有效值为 3,000 30,000 在上面的正则表达式中寻找逗号。我无法得到它
此正则表达式将测试逗号是否在正确的位置:
/^[0-9]{1,3}(,[0-9]{3})*(\.[0-9]*)?$/
您可以在此处输入验证的工作示例:http: //jsfiddle.net/jfriend00/u9VRX/
作为解释,正则表达式是:
start of string
1-3 digits
followed by 0 or more sequences of ,nnn where n is a digit
followed by an optional sequence that starts with a period
and consists of 0 or more digits
end of string
如果您不需要逗号并且无论如何都要解析数字,那么最简单的方法是先删除任何逗号,从而忽略它们:
var numStr = str.replace(/,/g, "");
如果您想在无效时确切知道出了什么问题,那么使用纯正则表达式要困难得多。我找不到解决问题的最简单方法,它通常也不会告诉你这个数字有什么问题,所以我会先使用一些普通的 javascript。
function checkValid(str) {
// check for legal characters
if (!str.match(/^[0-9,]+(\.[0-9]*)?$/)) {
// illegal characters present
return("illegal_chars");
}
// strip off trailing decimal part
var parts = str.split(".");
if (parts.length > 2) {
// too many periods
return("too_many_periods");
}
// split each comma segment (if there are any)
parts = parts[0].split(",");
if (parts.length > 1) {
for (var i = parts.length - 1; i > 0; i--) {
if (parts[i].length != 3) {
// wrong number of digits between commas
return("wrong_digits_between_commas");
}
}
if (parts[0].length > 3) {
// wrong number of digits in first segment before first comma
return("too many digits before first comma");
}
}
// if you got here without any errors, then all commas are legal
return(""); // indicate success
}
您可以在此处键入时看到这个工作:http: //jsfiddle.net/jfriend00/W6FnT/