2015-06-24 36 views
-2

我使用這個模式來檢查java模式的第一個字母不應該是連字符( - )

public static final Pattern VALID_FIRST_CHARACTERS = Pattern.compile("^[\\ \\'\\-]"); 

public boolean isValidFirstChar(String name) { 
    if (VALID_FIRST_CHARACTERS.matcher(name).matches()) { 
     return true; 
    } 
    return false; 
} 

沒有運氣,單引號(「)和空格(),有人可以幫我嗎?

+0

您認爲模式文字'^ [\\\\'\\ - ]'代表什麼?你爲什麼這麼認爲? –

+0

另外爲什麼你不使用'String#startsWith'? –

+0

我使用公共靜態最終圖案VALID_NAMEFIELD_CHARACTERS =模式 \t \t \t .compile( 「([A-ZA-ZàâäèéêëîïôœùûüÿçÀÂÄÈÉÊËÎÏÔŒÙÛÜŸÇ\\ \\ - ])*」); 它工作正常 只是無法檢查的第一個字符 – Happy

回答

1

你可以改變你這樣的,它會工作:

public static void main(String[] args) throws FileNotFoundException { 
    System.out.println(isValidFirstChar("-test")); 
    System.out.println(isValidFirstChar("\\test")); 
    System.out.println(isValidFirstChar("\'test")); 
    System.out.println(isValidFirstChar("test")); 
} 
public static final Pattern VALID_FIRST_CHARACTERS = Pattern.compile("^[\\\\ \\' \\-].*"); 

public static boolean isValidFirstChar(String name) { 
    if (VALID_FIRST_CHARACTERS.matcher(name).matches()) { 
     return true; 
    } 
    return false; 
} 

這樣做的結果是:

true 
true 
true 
false 

必須逃離\\對Java也爲正則表達式,這就是爲什麼你需要\\\\這會變成\\翻譯爲正則表達式時...

.*最後的意思是匹配之後的任何事情......所以它開始於\ or ' or -,隨後是任何事情。

+0

感謝您的回覆 其工作 我只需要連字符( - ),單引號(')和空格()進行匹配 所以我改成了 公共靜態最終模式VALID_FIRST_CHARACTERS =模式 \t \t \t .compile(「^ [' - ]。*」); 現在正常工作 謝謝 @ brso05 – Happy

相關問題