簡體   English   中英

有條件的java中的正則表達式

[英]regex in java with conditions

我必須根據以下條件在Java中編寫Regex:

  • 總數字字符數限制= 64
  • 單個數字0是可以接受的
  • 如果超過一位,則第一個數字必須是1到9
  • 以下數字可以是0到9
  • 小數點后允許兩位數
  • 逗號是不被接受的

到目前為止我只有這個:

(\\d{1,64})

有人能幫我嗎

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);

如果將其拆分為4種情況,可能是最清晰的:

(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的正則表達式語法並不太了解,所以我將其作為讀者的練習。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM