Javascript 带小数点的数字的正则表达式检查
我有一个正则表达式,用于检查输入的价格。价格不能为5位数或更多,但可以包含选项十进制数。所以-Javascript 带小数点的数字的正则表达式检查,javascript,regex,decimal,repeat,Javascript,Regex,Decimal,Repeat,我有一个正则表达式,用于检查输入的价格。价格不能为5位数或更多,但可以包含选项十进制数。所以- 1000=允许 9999.99=允许 10000=不允许 100.000=不允许 这就是我到目前为止所做的,它正确地检查了小数位数,但没有检查小数点前的位数。我做错了什么 var reg = new RegExp("^(\d{0,4})+(\.[0-9]{2})?$"); 你有一个错误的量词 var reg = new RegExp("^(\d{0,4})(\.[0-9]{2})?$"); 只
- 1000=允许
- 9999.99=允许
- 10000=不允许
- 100.000=不允许
var reg = new RegExp("^(\d{0,4})+(\.[0-9]{2})?$");
你有一个错误的量词
var reg = new RegExp("^(\d{0,4})(\.[0-9]{2})?$");
只需删除+
,您的正则表达式就可以了
看到了吗
使用此(\d{0,4})+
可以重复第一组,因此可以匹配点之前的任意数量的数字
如果我双倍逃跑,你的JSFIDLE对我有效
var reg = new RegExp("^\\d{0,4}(?:\\.\\d{2})?$");
或者不要把正则表达式放在字符串中
var reg = new RegExp(/^(\d{0,4})(\.[0-9]{2})?$/);
你有一个错误的量词
var reg = new RegExp("^(\d{0,4})(\.[0-9]{2})?$");
只需删除+
,您的正则表达式就可以了
看到了吗
使用此(\d{0,4})+
可以重复第一组,因此可以匹配点之前的任意数量的数字
如果我双倍逃跑,你的JSFIDLE对我有效
var reg = new RegExp("^\\d{0,4}(?:\\.\\d{2})?$");
或者不要把正则表达式放在字符串中
var reg = new RegExp(/^(\d{0,4})(\.[0-9]{2})?$/);
为什么允许第二个和最后一个?不允许最后一个,因为价格只有两个十进制数字,我猜。为什么允许第二个和最后一个?不允许最后一个,因为价格只有两个十进制数字,我猜。正则表达式应该改为允许“1000.1”,不允许“->
^(\d{1,4})(\.[0-9]{1,2})?$
@法老不,价格不应该总是有两位小数,而不是1。@法老,为什么?我在OPs问题中看不到这一要求。我知道价格总是以零或两位小数显示,但如果正则表达式正在解析用户输入,我会考虑允许“10.1”-缺点是拼写错误。@stema:对,这不是问题的一部分。我只想暗示这两种可能性,特别是作为有效价格的空字符串。我想这就是为什么约瑟夫尝试使用+
-使至少一个数字成为必需的。正则表达式应该改为允许“1000.1”,而不允许“->^(\.[0-9]{1,2}”)$
@法老不,价格不应该总是有两位小数,而不是1。@法老,为什么?我在OPs问题中看不到这一要求。我知道价格总是以零或两位小数显示,但如果正则表达式正在解析用户输入,我会考虑允许“10.1”-缺点是拼写错误。@stema:对,这不是问题的一部分。我只想暗示这两种可能性,特别是作为有效价格的空字符串。我想这就是为什么约瑟夫尝试使用+
——至少需要一个数字。