【发布时间】:2012-07-13 09:20:01
【问题描述】:
我正在尝试获取一个在 java (java.util.regex) 中使用的有效正则表达式,它验证以下格式:
一个最多有 15 位的数字,其中 3 个 MAX 位可以是十进制,前面有分隔符 (,)
所以,有效的应该是:
123456789012345 (15 digits, ok)
12345678901234,1
[EDIT],这些也应该是有效的:
1234567890123,45
123456789012,345
到目前为止,我想出了以下正则表达式模式:
Pattern = [0-9]{1,15}(\,[0-9]{1,3})?
这会检查 1 到 15 位数字的范围,后跟可选的分隔符,后跟另外 3 位数字。但是,这不会检查输入的总长度。使用此正则表达式,值 123456789012345,123 将是有效的。
所以,我想我会添加一个额外的表达式来检查总长度,并使用 "(?=" 构造来模拟逻辑 AND 行为。
所以我开始将它添加到我现有的正则表达式中,如下所示:
Pattern = (?= [0-9]{1,15}(\,[0-9]{1,3})?)
然而,这基本上导致我扔给它的所有东西都失败了,我无法让它进一步工作。我不明白我在这里做错了什么?在这工作之后,我会添加另一个表达式来检查总长度,我认为是 (?=.{16}) 之类的。
【问题讨论】: