簡體   English   中英

檢查字符串是否僅包含特定數字(例如“111”)

[英]Check if string contains a particular digit only (e.g. “111”)

需要確定給定的字符串是否僅包含特定的數字 - 例如“111”,“2”,“33”應該返回true。

“12”應該返回false。

空字符串(“”)也應該返回true。

該字符串僅包含數字,不包含其他字符。

寫了一個似乎有用的丑陋Java正則表達式,但不禁認為它應該以更短的方式編寫:

str.matches("1*|2*|3*|4*|5*|6*|7*|8*|9*|0*")

有沒有更簡單,更優雅的方式來做到這一點,避免逐個列出所有數字?

您可以使用此正則表達式,它使用組來捕獲第一個數字,然后使用反向引用來確保以下數字全部相同,

^(\d)?\1*$

說明:

  • ^ - 字符串的開頭
  • (\\d)? - 匹配一個數字並捕獲group1和? 使其成為允許匹配空字符串的可選項。
  • \\1* - 匹配相同的數字零次或多次
  • $ - 字符串結束

正則表達式演示

Java代碼,

List<String> list = Arrays.asList("5","5555","11111","22222","1234", "");
list.forEach(x -> {
    System.out.println(x + " --> " + x.matches("(\\d)?\\1*"));
});

打印,

5 --> true
5555 --> true
11111 --> true
22222 --> true
1234 --> false
 --> true

暫無
暫無

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

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