我正在尝试验证给定的字符串。它应该允许(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.
我很惊讶普通人创建的正则表达式有多复杂。