使用正则表达式的名称过滤器 - Java
问题描述:
如何创建一个表达式,如果一个字符串包含除字母(包括重音符),连字符,撇号和单个空格以外的字符,则返回false?给我留下你的,“关于ВладимирПутин和豊田章男?”。我意识到试图确定什么是名字和什么不是名字是愚蠢的,但这仅仅是为了教育目的。使用正则表达式的名称过滤器 - Java
此外,有没有其他的英文名称中常见的符号?
答
一个很好的讨论,你可以试试这个:
private static final Pattern namePattern =
Pattern.compile("^[-' \\p{L}\\p{M}]+$");
public static boolean isValidName(String text) {
return namePattern.matcher(text).matches()
&& text.indexOf(" ") < 0
&& !text.startsWith(" ") && !text.endsWith(" ");
}
+0
正是我在找的东西。谢谢! – 2013-03-03 05:50:00
答
一个简单的谷歌搜索会给你带有过滤器的java正则表达式,你可能想要的。但是,如果你的问题是要知道什么情况下应该是过滤器的功能得到有效名称的一部分,再有就是在这里What are all of the allowable characters for people's names?
你试过结合[字符串#matches(String regex)](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#matches%28java.lang.String%29)和[character class]( http://www.regular-expressions.info/charclass.html)从正则表达式? – Pshemo 2013-03-02 19:59:21