2011-05-21 50 views
1
private static final Pattern namePattern = 
    Pattern.compile("[a-zA-Z0-9_-]{3,12}"); 

if (player.getName().length() < 3 || 
     player.getName().length() > 12 || 
     namePattern.matcher(player.getName()).matches()) { 
    player.ban("[Autoban] Character-name PE", true); 
    return; 
} 

代碼是有點明顯,我希望Java的布爾問題

如果玩家的名字是短超過12或然後3,或有不應該是我一個名稱= BAM任何符號,禁!

但即使認爲我的玩家的名字就像混沌或測試一樣,它會被這段代碼自動編程。 IDK的,如果namepattern圖案塊字符藏漢,我只是爲阻止像"!#&%¤/&%(/)(/(=)[email protected]£[email protected]£{€@£葉... 符號我在做什麼錯:(?

回答

3

我想你的意思是(!namePattern.matcher(player.getName()).matches())

此外,您可以」因爲它檢查長度[a-zA-Z0-9_-]{3,12}

編輯:VE僅使用正則表達式匹配。

可以使用這樣的功能

public void banIfNeeded(Player player) 
{ 
    Pattern namePattern = Pattern.compile("[a-zA-Z0-9_-]{3,12}"); 
    if(!namePattern.matcher(player.getName()).matches()) { 
     System.out.print("Banned"); 
     // Ban somehow 
    } 
} 

由於@bkail評論(感謝!),沒有必要爲^\z所以我刪除他們:)

+0

感謝現在的工作,但即使我的字符命名的東西!「__#! 「_#!或者像這樣的符號,它不會被禁止。只有長效檢查似乎工作。 – PirateOwh 2011-05-21 14:42:14

+0

使用.matches()時,不需要錨(「^」和「\ z」)。 – 2011-05-21 14:46:45

+0

如何檢查玩家是否在名稱中使用symbool?我想阻止所有符號 – PirateOwh 2011-05-21 14:47:50