2016-05-19 133 views
2

我想檢查字符串的格式。 可能的格式爲:正則表達式,以逗號分隔的字符

-"AZERTY" 
-"AZERTY,REGULAR,AKILO" 

我做這個,但我不知道:

String formatAttributes = "^[a-zA-Z0-9](,[a-zA-Z0-9])?*$"; 

這是正確的嗎?

+1

' 「^ [A-ZA-Z0-9] +([A-ZA-Z0-9] +)* $」;' –

+0

如果價值可能是空的,例如'「ABC,XYZ」',然後用@PranavCBalan在正則表達式中用'*'替換'+'。如果你使用'matches()'調用來檢查,看起來很可能,那麼'^'和'$'是不必要的。 – Andreas

+0

@Andreas他想檢查整個字符串格式,所以需要'^'和'$'。根據示例,我不認爲他需要匹配字符串,比如「ABC,XYZ」' –

回答

2

下面是如何進行的:

Pattern pattern = Pattern.compile("\\w+(,\\w+)*"); 
System.out.println(pattern.matcher("AZERTY").matches()); 
System.out.println(pattern.matcher("AZERTY,REGULAR,AKILO").matches()); 

輸出:

true 
true 

NB:\w是單詞字符:[A-ZA-Z_0-9],這意味着下劃線已添加到您的初始正則表達式中,如果您不需要它,則正則表達式將爲[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*

+0

npbr不客氣 –

0

這裏有幾種合理的解決方案。假設您只想匹配您的兩個示例AZERTYAZERTY,REGULAR,AKILO,其中的字符可以是任何a-z

^([a-z0-9]+(?:,[a-z0-9]+,[a-z0-9]+)?)$ 

Regular expression visualization

注:此表達式假定使用的情況下不敏感的標誌。

現場演示

https://regex101.com/r/yP6lX6/1

+0

謝謝! :) – ZouIou

相關問題