Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式,用逗号分隔的字符_Java_Regex - Fatal编程技术网

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”
@PranavCBalan
matches()
将匹配整个字符串,无论是否给定
^$
<如果需要锚定搜索,code>find()
将需要
^$
。@Andreas:我不熟悉java中的正则表达式:)