15

G。:

String string="Marc Louie, Garduque Bautista";

我想检查一个字符串是否只包含单词、逗号和空格。我尝试使用正则表达式,我得到的最接近的是:

String pattern = "[a-zA-Z]+(\\s[a-zA-Z]+)+";

但它不检查那里是否有逗号。有什么建议吗?

4

5 回答 5

30

你需要使用模式

^[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 ]++$

应该工作。

于 2013-04-14T22:47:36.930 回答
2

为什么不简单地:

"[a-zA-Z\\s,]+"
于 2013-04-14T22:46:25.417 回答
1

最好用这个

"(?i)[a-z,\\s]+"
于 2013-04-17T06:51:40.477 回答
0

如果您的意思是“一些单词,任何空格和一个逗号,无论它发生在哪里”,那么我的感觉是建议这种方法:

"^[^,]* *, *[^,]*$"

这意味着“以零个或多个不是 (^) 逗号的字符开头,然后你可以找到零个或多个空格,然后是一个逗号,然后又是零个或多个空格,最后又是零个或多个不是 (^) 的字符) 逗号”。

于 2013-04-17T07:10:45.953 回答
-1

在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);
于 2018-09-24T11:37:41.320 回答