0

我正在创建一个正则表达式来验证一个城市字段。使用下面的代码,我只能用一个空格来验证 City 字段:

Pattern pattern_ = Pattern.compile("^[a-zA-Z]+(?:[\\s-][a-zA-Z]+)*$");

关于如何改进我的正则表达式以验证具有多个空格的城市字段的任何建议?

好吧,最后我正在使用这个正则表达式:

Pattern pattern_ = Pattern.compile("^[a-zA-Z]+(?:(?:\\s+|-)[a-zA-Z]+)*$");

但是现在我遇到了口音问题如何在我的城市字段中添加口音?

4

3 回答 3

5

使用替代而不是字符类:

Pattern pattern_ = Pattern.compile("^[a-zA-Z]+(?:(?:\\s+|-)[a-zA-Z]+)*$");
于 2013-08-19T15:31:06.883 回答
2

好吧,最简单的方法是:

^[a-zA-Z\s-]+$

或者,如果您愿意,也可以这样做,这将确保字符串不以空格或连字符开头或结尾:

^[a-zA-Z][a-zA-Z\s-]+[a-zA-Z]$

当然,不要忘记\在 Java 中转义:

Pattern pattern_ = Pattern.compile("^[a-zA-Z][a-zA-Z\\s-]+[a-zA-Z]$");
于 2013-08-19T15:31:55.637 回答
0

尝试:

Pattern pattern_ = Pattern.compile("^[a-zA-Z\\s-]+$");
于 2013-08-19T15:29:54.050 回答