2013-03-02 34 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