簡體   English   中英

Java RegExp用於單獨的數字組

[英]Java RegExp for a separated group of digits

我正在嘗試編寫一個正則表達式驗證:1到99之間的一組(或多個)數字,中間用|隔開| , (可以組合使用)

必須接受:

1
10
1,2,3|5|10,20|30
1|5

必須拒絕:

1,
10,,
1,2,3!5

對於數字組,其直截了當: [1-9][0-9] 對於其余部分,這仍然是個謎。

有人可以協助提出正確的正則表達式嗎?

^[1-9][0-9]?(?:[,|][1-9][0-9]?)*$

說明:

^            # Start of string
[1-9][0-9]?  # Match a number between 1 and 99
(?:          # Start of optional capturing group:
 [,|]        #  Match one separator
 [1-9][0-9]? #  and a number 1-99
)*           # any number of times (including 0)
$            # End of string

在regex101.com上進行實時測試。

\d([,|]?\d)*

是表示的可能候選者,它表示重復至少一個或多個數字,並由{ ',''|'任意字符分隔開(可選- [,|]后的?表示可選) '|' }。

證明:

  • 叉指分隔符是可選的,因此兩個分隔符之間可以有任意位數。 這允許任意長度的數字序列。
  • 數字之間最多可以有一個分隔符(分隔符是可選的,但必須后面跟一個數字)。
  • 由於正則表達式以數字開頭,並以一個數字結尾,所以不可接受,| 在字符串的開頭或結尾。

參見演示進行測試。

注意

如果您想逐行接受它,拒絕以分隔符char開頭或結尾的內容,只需將regexp錨定到^$到行的開頭/結尾。 就像在demo2中一樣

^\d([,|]?\d)*$

暫無
暫無

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

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