正则表达式为货币

时间:2011-05-15 19:28:09

标签: regex

我在正则表达式上非常糟糕,并且想知道是否有人可以帮助我。我需要接受允许$,€和£的值,但不需要最小5.00(不需要.00但允许使用.00)和2,000(不需要逗号但允许使用逗号)。

有效输入的一些例子

$5
€5
£5
$5.00
5
1000
1,000
1,000.00

2 个答案:

答案 0 :(得分:2)

如果你想允许像£5.32这样的值:

^[$€£]?(\d+([\.,]\d{2})?)$

如果不是:

^[$€£]?(\d+([\.,]00)?)$

使用正则表达式检查其格式是否正确后,您可以继续使用正则表达式的第一个返回组检查5 < int(value) < 2000

编辑:考虑到这一点,这里也是一个正在处理边界的正则表达式:

^[$€£]?((([1-5],?)?\d{2,3}|[5-9])(\.\d{2})?)$

答案 1 :(得分:0)

RegexMagic救援:

\b(?:[$£€])? *(?:2,?000|1,?[0-9]{3}|[1-9][0-9]{1,2}|[5-9])(?:\.[0-9]{1,2})?\b

你是否同意在正则表达式中做这一切(虽然可能)并不是一个非常好的主意?