簡體   English   中英

正則表達式Java合並模式

[英]Regular expression Java Merge Pattern

我有這三個正則表達式。 它們單獨工作,但我想將它們合並為一個模式。

regex1 = [0-9]{16}
regex2 = [0-9]{4}[-][0-9]{4}[-][0-9]{4}[-][0-9]{4}
regex3 = [0-9]{4}[ ][0-9]{4}[ ][0-9]{4}[ ][0-9]{4}

我使用這種方法:

Pattern.compile(regex);

哪個正則表達式字符串可以合並它們?

您可以使用反向引用

[0-9]{4}([ -]|)([0-9]{4}\1){2}[0-9]{4}

僅當分隔符為全部時才匹配

  • 空格
  • 連字號
  • 空白

\\1表示“這與第一個捕獲組 (括號中的表達式)完全匹配”。

由於([ -]|)是該組,因此要使模式匹配,其他兩個分隔符都必須相同。

您可以將其進一步簡化為:

\d{4}([ -]|)(\d{4}\1){2}\d{4}

以下應匹配三個模式匹配的任何內容:

regex = [0-9]{4}[- ]?[0-9]{4}[- ]?[0-9]{4}[- ]?[0-9]{4}

也就是說,我假設您對連字符,空格數字之間的任何內容都不滿意?

注意:這也將匹配您將三者任意組合的情況,例如

0000-0000 00000000

這可能是不希望的?


或者,如果您需要匹配三個單獨的模式中的任何一個,則只需將它們與|連接即可| , 如下:

([0-9]{16})|([0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{4})|([0-9]{4} [0-9]{4} [0-9]{4} [0-9]{4})

(您的原始示例似乎在空格和連字符周圍有不必要的方括號)

暫無
暫無

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

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