我正在创建一个正则表达式来验证城市字段。使用以下代码,我只能使用一个空格验证City字段:
Pattern pattern_ = Pattern.compile("^[a-zA-Z]+(?:[\\s-][a-zA-Z]+)*$");
有关如何改进我的正则表达式以验证具有多个空格的城市字段的任何建议吗?
好吧,最后我正在使用这个正则表达式:
Pattern pattern_ = Pattern.compile("^[a-zA-Z]+(?:(?:\\s+|-)[a-zA-Z]+)*$");
但是现在我的口音有问题如何在城市场地添加重音?
答案 0 :(得分:5)
使用替换而不是字符类:
Pattern pattern_ = Pattern.compile("^[a-zA-Z]+(?:(?:\\s+|-)[a-zA-Z]+)*$");
答案 1 :(得分: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]$");
答案 2 :(得分:0)
尝试:
Pattern pattern_ = Pattern.compile("^[a-zA-Z\\s-]+$");