扩展正则表达式以检查金额

时间:2014-01-09 20:09:37

标签: html regex input currency

我有一个正则表达式,用于检查HTML输入的值,如果它符合正确的形式:

^(?=\(.*\)|[^()]*$)\(?\d{1,3}(,?\d{3})?(\.\d\d?)?\)?\€?$

现在我需要扩展正则表达式,以便它还检查金额是否大于0.40€。

允许的例子:

25€
25
25.00
25.00€
25,00
25,00€
0.99€
0.99
0,99
0,99€

不允许:

0.39
0.39€
0,39
0,39€

2 个答案:

答案 0 :(得分:0)

对我而言,您发布的模式会导致错误的结果(see here),因为并非所有允许的输入都匹配。

假设你在这里使用JS,你可以使用另一个正则表达式,其中包括对> 0.4的检查:

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

Regular expression visualization

Debuggex Demo
regex101 Demo

排除0.40 ,因为我将您的bigger than 0.40€解释为> 0.4

如果你的意思是>= 0.4,你可以使用

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

答案 1 :(得分:0)

这个适合我,匹配所需的字符串。

/^(\d{1,3}([,\.][4-9]\d)?|([1-9]{1,3}([,\.]\d\d)?))\€?$/gm

http://refiddle.com/h2f