我想檢查字符串的格式。 可能的格式爲:正則表達式,以逗號分隔的字符
-"AZERTY"
-"AZERTY,REGULAR,AKILO"
我做這個,但我不知道:
String formatAttributes = "^[a-zA-Z0-9](,[a-zA-Z0-9])?*$";
這是正確的嗎?
我想檢查字符串的格式。 可能的格式爲:正則表達式,以逗號分隔的字符
-"AZERTY"
-"AZERTY,REGULAR,AKILO"
我做這個,但我不知道:
String formatAttributes = "^[a-zA-Z0-9](,[a-zA-Z0-9])?*$";
這是正確的嗎?
下面是如何進行的:
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]+)*
npbr不客氣 –
這裏有幾種合理的解決方案。假設您只想匹配您的兩個示例AZERTY
和AZERTY,REGULAR,AKILO
,其中的字符可以是任何a-z
。
^([a-z0-9]+(?:,[a-z0-9]+,[a-z0-9]+)?)$
注:此表達式假定使用的情況下不敏感的標誌。
現場演示
謝謝! :) – ZouIou
' 「^ [A-ZA-Z0-9] +([A-ZA-Z0-9] +)* $」;' –
如果價值可能是空的,例如'「ABC,XYZ」',然後用@PranavCBalan在正則表達式中用'*'替換'+'。如果你使用'matches()'調用來檢查,看起來很可能,那麼'^'和'$'是不必要的。 – Andreas
@Andreas他想檢查整個字符串格式,所以需要'^'和'$'。根據示例,我不認爲他需要匹配字符串,比如「ABC,XYZ」' –