G。:
String string="Marc Louie, Garduque Bautista";
我想检查一个字符串是否只包含单词、逗号和空格。我尝试使用正则表达式,我得到的最接近的是:
String pattern = "[a-zA-Z]+(\\s[a-zA-Z]+)+";
但它不检查那里是否有逗号。有什么建议吗?
你需要使用模式
^[A-Za-z, ]++$
例如
public static void main(String[] args) throws IOException {
final String input = "Marc Louie, Garduque Bautista";
final Pattern pattern = Pattern.compile("^[A-Za-z, ]++$");
if (!pattern.matcher(input).matches()) {
throw new IllegalArgumentException("Invalid String");
}
}
编辑
根据迈克尔的精明评论,OP 可能意味着一个逗号,在这种情况下
^[A-Za-z ]++,[A-Za-z ]++$
应该工作。
为什么不简单地:
"[a-zA-Z\\s,]+"
最好用这个
"(?i)[a-z,\\s]+"
如果您的意思是“一些单词,任何空格和一个逗号,无论它发生在哪里”,那么我的感觉是建议这种方法:
"^[^,]* *, *[^,]*$"
这意味着“以零个或多个不是 (^) 逗号的字符开头,然后你可以找到零个或多个空格,然后是一个逗号,然后又是零个或多个空格,最后又是零个或多个不是 (^) 的字符) 逗号”。
在java中验证字符串的开头和结尾没有特殊字符,但中间可能有一些特殊字符。
String strRGEX = "^[a-zA-Z0-9]+([a-zA-Z0-9-/?:.,\'+_\\s])+([a-zA-Z0-9])$";
String toBeTested= "TesADAD2-3t?S+s/fs:fds'f.324,ffs";
boolean testResult= Pattern.matches(strRGEX, toBeTested);
System.out.println("Test="+testResult);