簡體   English   中英

Java長正則表達式

[英]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 ,下划線, USA任何單個字符。 相反,只需使用文字字符串:

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

您應該替換一個數字

在此處輸入圖片說明

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

您的正則表達式有一個錯字,在Z之后有一個)而不是] 嘗試這個:

String regex = "/^([0-9]{9})_([A-Z]{5})_([0-9]{8})_([1_USA]{1})$/"

暫無
暫無

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

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