[英]Java long regex
我正在嘗試表達這樣的模式212425762_CHECK_08182014_1_USA
9位數字后跟一個下划線,然后是5個字母,另一個下划線,一個8位數字和“ _1_USA”。
這就是我到目前為止
String regex = "/^([0-9]{9})_([A-Z]{5})_(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])(20\\d\\d)(_1_USA)$/"
但這是行不通的。 我想“ _1_USA”部分出了問題。 有任何想法嗎?
數量[1_USA]{1}
告訴Java匹配1
,下划線, U
, S
或A
任何單個字符。 相反,只需使用文字字符串:
String input = "212425762_CHECK_08182014_1_USA";
String regex = "^([0-9]{9})_([A-Z]{5})_([0-9]{8})_(1_USA)$";
if (input.matches(regex)) {
System.out.println("The input matches.");
}
此外,您的正則表達式還有其他一些錯別字,例如前斜杠和后斜杠以及錯誤地關閉了字符類。 Java與其他一些語言不同,Java在其正則表達式模式中不使用正斜杠(除非您從字面上表示它們)。
您有一些不應存在的字符類。
這可能就是您的意思。
原始: ^([0-9]{9})_([AZ]{5})_([0-9]{8})_(1_USA)$
字符串: "^([0-9]{9})_([AZ]{5})_([0-9]{8})_(1_USA)$"
擴展
^
( [0-9]{9} ) # (1)
_
( [A-Z]{5} ) # (2)
_
( [0-9]{8} ) # (3)
_
( 1_USA ) # (4)
$
您的正則表達式有一個錯字,在Z
之后有一個)
而不是]
。 嘗試這個:
String regex = "/^([0-9]{9})_([A-Z]{5})_([0-9]{8})_([1_USA]{1})$/"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.