用于验证全名的 Java 正则表达式在 Java 中只允许空格、字母、逗号、点



我正在尝试验证给定的字符串。它应该允许(a-z,单词之间的空格,逗号,点)。

我试过这个,但它不起作用: final 字符串名称 = "/^[a-z]+(\s+[a-z]+)*$/i";

      Pattern pattern = Pattern.compile(name );
      Matcher matcher = pattern.matcher("Ravi is a java developer");
      System.out.println("***********"+matcher.matches());

请向我建议。

提前谢谢。

您提供的正则表达式和示例将不起作用,因为您不允许大写字母。你可以试试这个:

([a-zA-Z]*(s)*[.,]*)*
您需要

启用不区分大小写的修饰符(?i)

String s = "Ravi is a java developer";
System.out.println(s.matches("(?i)[a-z]+(\s+[a-z]+)*")); // true

System.out.println(s.matches("(?i)[a-z]+([,.\s]+[a-z]+)*")); // true

这应该有效:

String name = "[a-zA-z]*([,.\s]+[a-z]*)*"

这应该会有所帮助:https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

为什么要复杂化?

"^A-Z[a-z \.,]+$" <-- something that starts with a capital letter and has only letters, space, dots and commas after that.

我很惊讶普通人创建的正则表达式有多复杂。

最新更新