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