首先,需要制定一個正則表達式的每個數字0和999假設009之間匹配是一個有效的數字可以基本匹配的數字三個序列([0-9]
),並且使所述第一兩個可選:
[0-9]?[0-9]?[0-9]
上述正則表達式匹配999
,9
,19
,009
,但不是1234
或9999
。
如果009
是不是有效的數字,那麼你就需要排除從第一兩組0
以上,得到以下特性:
([1-9][0-9]|[1-9])?[0-9]
也就是說,如果你有一個百位數,那麼就一定不能0([1-9]
),如果你有一個十位數(但不是一個數字),那麼它也不能是0(正則表達式中的第二個[1-9]
)。
最後,你需要包括可選部分,這基本上是一個逗號,後跟一個數字,得到最終的表達:
([1-9][0-9]|[1-9])?[0-9](:[0-9])?
然後,您可以運行一個簡單的獨立的程序,一些簡單的測試:
public static void main(String... args) {
Pattern p = Pattern.compile("(?:[1-9][0-9]|[1-9])?[0-9](?::[0-9])?");
System.out.println(p.matcher("999").matches());
System.out.println(p.matcher("1234").matches());
System.out.println(p.matcher("9").matches());
System.out.println(p.matcher("19").matches());
System.out.println(p.matcher("999:9").matches());
System.out.println(p.matcher("12:99").matches());
}
所以,你想我們來測試它嗎? – home
你的正則表達式是錯誤的。使用在線工具/網站或離線工具,如regexbuddy或expresso。 – FailedDev
如果您有像這樣的小型獨立可測試項目,只需創建一個獨立程序,在您不使用JUnit或其他程序時調用它。 –