Java使用正则表达式来验证输入字符串

时间:2013-04-14 22:43:45

标签: java regex

G:

String string="Marc Louie, Garduque Bautista";

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

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

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

5 个答案:

答案 0 :(得分:27)

您需要使用模式

^[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");
    }
}

修改

根据Michael的astute comment,OP可能意味着一个逗号,在这种情况下

^[A-Za-z ]++,[A-Za-z ]++$

应该工作。

答案 1 :(得分:2)

为什么不简单:

"[a-zA-Z\\s,]+"

答案 2 :(得分:1)

最好使用此

"(?i)[a-z,\\s]+"

答案 3 :(得分:0)

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

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

这意味着“从零或多个字符开始,这些字符不是(^)逗号,然后你可以找到零个或多个空格,然后是逗号,然后再找零个或多个空格,最后再找零个或多个字符NOT(^)逗号“。

答案 4 :(得分:-1)

在Java中验证String时,其中开头和结尾没有特殊字符,但中间可能有一些特殊字符。

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);