2011-05-15 69 views
0

我真的很糟糕的正则表达式,并想知道是否有人可以帮助我这个。我需要接受允许$,€和£的值,但不要求最小5.00(.00不是必需但允许)和2,000(逗号不是必需但允许)。正则表达式对于货币

的有效输入

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

最低5.00或2,000? – sawa 2011-05-15 20:35:39

回答

2

如果你想允许像5.32£值的一些例子:

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

如果不是:

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

一旦你”已检查它是否格式正确使用正则表达式,你可以继续检查5 < int(value) < 2000是否使用了第一个返回的正则表达式组。

编辑:已经想过这个问题,这里有一个正则表达式,这将花费太多的边界的​​护理:

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

+0

逗号为数千;不是小数部分。 – 2011-05-15 20:32:44

+0

嗯,我试过你的新编辑,当我测试模式时,我仍然得到错误的回报。 – Chad 2011-05-17 01:44:07

0

RegexMagic救援:

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

你是否同意这样做的所有这在一个正则表达式(尽可能)不是一个非常好的主意?

+0

这只是在客户端进行。 – Chad 2011-05-16 00:01:46