2013-03-02 85 views
1

如何创建一个表达式,如果一个字符串包含除字母(包括重音符),连字符,撇号和单个空格以外的字符,则返回false?给我留下你的,“关于ВладимирПутин和豊田章男?”。我意识到试图确定什么是名字和什么不是名字是愚蠢的,但这仅仅是为了教育目的。使用正则表达式的名称过滤器 - Java

此外,有没有其他的英文名称中常见的符号?

+0

你试过结合[字符串#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

回答

1

一个很好的讨论,你可以试试这个:

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