Java 正则表达式,用逗号分隔的字符
我想检查字符串的格式。 可能的格式有:Java 正则表达式,用逗号分隔的字符,java,regex,Java,Regex,我想检查字符串的格式。 可能的格式有: -"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()); S
-"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]这意味着下划线已添加到初始正则表达式中,如果您不需要,则regexp将是[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*
这里有几个合理的解决方案。假设您只想精确匹配两个示例AZERTY
和AZERTY,REGULAR,AKILO
,其中字符可以是任意a-z
^([a-z0-9]+(?:,[a-z0-9]+,[a-z0-9]+)?)$
注意:此表达式假定使用不区分大小写的标志
现场演示
“^[a-zA-Z0-9]+(,[a-zA-Z0-9]+)*$”代码>如果值可能为空,例如“ABC,,XYZ”
,则将正则表达式中的+
替换为*
,替换为@PranavCBalan。如果您使用matches()
调用进行检查,这似乎是可能的,那么^
和$
是不必要的。@Andreas希望检查整个字符串格式,因此需要^
和$
。根据这个例子,我认为他不需要匹配字符串,比如“ABC,,XYZ”
@PranavCBalanmatches()
将匹配整个字符串,无论是否给定^$
<如果需要锚定搜索,code>find()
将需要^$
。@Andreas:我不熟悉java中的正则表达式:)