java中带条件的正则表达式

java中带条件的正则表达式,java,regex,Java,Regex,我必须根据以下条件用Java编写正则表达式: 总数字字符限制=64 可以接受0的一位数 如果超过一个数字,则第一个数字必须为1到9 以下数字可以是0到9 小数点后允许有两位数字 不接受逗号 到目前为止,我只知道: (\\d{1,64}) 有人能帮我吗?如果你把它分为4种情况,可能是最清晰的: Pattern regex = Pattern.compile( "^ # Start of string \n" + "(?!

我必须根据以下条件用Java编写正则表达式:

  • 总数字字符限制=64
  • 可以接受0的一位数
  • 如果超过一个数字,则第一个数字必须为1到9
  • 以下数字可以是0到9
  • 小数点后允许有两位数字
  • 不接受逗号
到目前为止,我只知道:

(\\d{1,64})

有人能帮我吗?如果你把它分为4种情况,可能是最清晰的:

Pattern regex = Pattern.compile(
    "^             # Start of string                 \n" +
    "(?!.{65})     # Assert length not 65 or greater \n" +
    "(?:           # Match either                    \n" +
    " 0            #  0                              \n" +
    "|             # or                              \n" +
    " [1-9]\\d*    #  1-n, no leading zeroes         \n" +
    ")             # End of alternation              \n" +
    "(?:           # Match...                        \n" +
    " \\.          #  a dot                          \n" +
    " \\d{2}       #  followed by exactly 2 digits   \n" +
    ")?            # ...optionally                   \n" +
    "$             # End of string", 
    Pattern.COMMENTS);
(0(\.\d{1,2})?|[1-9](\d{0,63}|\d{0,61}\.\d|\d{0,60}\.\d\d))
这是一个0,可选后跟一个十进制数和一个或两个以上的数字,或者是一个1-9,后跟以下数字之一:

  • 最多63位以上
  • 最多可多出61位、一位小数和一位数字
  • 最多可再增加60位数字、一位小数和两位数字

绝对值得在Java正则表达式中添加一些注释,但我对Java正则表达式语法不太熟悉,因此我将把它作为练习留给读者。

感谢您的解释。你太棒了。@user1679321,如果这回答了你的问题,请勾选旁边的标记。欢迎来到SO!