我想获得一个有效的正则表达式在Java(java.util.regex包),用于验证以下格式来使用(= X):正则表达式不能得到特殊结构的工作
一个数字,具有最多15个数字,其中3个MAX位数可以是小数,它们通过隔板preceeded(,)
所以,有效将是:
123456789(15 digits, ok)
123456789,1
[编辑],这些也应该是有效的:
1234567890123,45
123456789012,345
到目前为止我想出以下正则表达式模式:
Pattern = [0-9]{1,15}(\,[0-9]{1,3})?
此检查一个范围为1到15位,通过一个可选的分离器,随后另一3位以下。但是,这并不检查输入的总长度。有了这个正则表达式,值123456789,123将是有效的。
所以,我想我会添加一个额外的表达式,检查总长度,并使用“(?=”构建模拟的逻辑和行为。
所以我开始将是我现有的正则表达式如下:?
Pattern = (?= [0-9]{1,15}(\,[0-9]{1,3})?)
然而,这导致基本上一切,我扔在它失败了,我不能让它的工作进一步我没有看到我在做什么错在这里后一切正常,我想添加另一个表达式来检查总长度,就像我想的那样(?=。{16})。
编辑:好像我不是在我的描述不够具体。我已经添加了一些可能有效的例子。 “问题”是可能少于3位数字,在这种情况下,数字之前的数字可能超过12个字符。 – Martijn 2012-07-13 10:21:39
@Martijn:现在它适用于你所有的例子。 – Keppil 2012-07-13 10:27:03