Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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_Currency - Fatal编程技术网

正则表达式货币格式-javascript

正则表达式货币格式-javascript,javascript,regex,currency,Javascript,Regex,Currency,我目前正在使用以下正则表达式验证html输入表单字段中的货币: /[1-9]\d*(?:\.\d{0,2})?/ 但是,它允许通过以下值:13000.234.12 这不是有效的值。以下是我希望允许通过的有效值: 有效 125 1.25 1000.15 700.1 80.45 0.25 130.1.4 21.......14 无效 125 1.25 1000.15 700.1 80.45 0.25 130.1.4 21.......14 感觉应该有一个标准的正则表达式模式来处理这个问题,

我目前正在使用以下正则表达式验证html输入表单字段中的货币:

/[1-9]\d*(?:\.\d{0,2})?/
但是,它允许通过以下值:13000.234.12

这不是有效的值。以下是我希望允许通过的有效值:

有效

125
1.25
1000.15
700.1
80.45
0.25
130.1.4
21.......14
无效

125
1.25
1000.15
700.1
80.45
0.25
130.1.4
21.......14
感觉应该有一个标准的正则表达式模式来处理这个问题,是吗


旁注:我正在阻止通过事件键侦听器输入字母数字字符和美元符号,因此它们已经无法输入,这将使此问题更容易解决。

类似的操作应该可以:

^(\d*\.\d{1,2}|\d+)$
它匹配:

1.00
1
0.23
0.2
.2
它不匹配:

.
1.1.

所以它是(开始)(任何数量的数字都只有,甚至是零),(然后数字只有,一个或两个,不必在那里)结束

我用逗号作为小数分隔符。朋友们:

^([0]?(,\d{1,2})?|([1-9]{1,3})?((\.\d{3})*|([1-9])*)?(,\d{1,2})?)?$

您不需要
^
$
来确保末端没有垃圾吗?使用“d{0,2}”来允许像“1”这样的值。如果您使用正则表达式来验证输入,则不需要密钥事件侦听器。您只需要在用户输入完字符后验证输入,直到那时,您才真正关心值是什么(例如,用户可以从其他地方复制和粘贴,然后编辑粘贴的内容)。这不也会匹配空字符串吗?它会,但它也允许更常见的输入,如.25或1.2,而不是强制0。一开始。您对我如何在保持灵活性的同时强制执行最小字符限制有什么建议吗?您基本上有两种模式(
1.0
.0
)需要担心,因此我必须将正则表达式分解为两个基本上独立的正则表达式模式,由
|
分隔。啊,我明白了,这是一个相当好的方法。我没想到。我需要经常温习一下我的正则表达式