Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带小数点的数字的正则表达式检查_Javascript_Regex_Decimal_Repeat - Fatal编程技术网

Javascript 带小数点的数字的正则表达式检查

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})?$"); 只

我有一个正则表达式,用于检查输入的价格。价格不能为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})?$");
只需删除
+
,您的正则表达式就可以了

看到了吗

使用此
(\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:对,这不是问题的一部分。我只想暗示这两种可能性,特别是作为有效价格的空字符串。我想这就是为什么约瑟夫尝试使用
+
——至少需要一个数字。