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;
}
代码有点明显,我希望
如果玩家名称长于12或者短于3,或者有任何符号不应该是我的名字= BAM,禁止!
但是即使我认为我的播放器名称就像Chaos或者测试一样,它也会被这段代码自动化。
idk如果namepattern Pattern阻止字符,我只是阻止像"!#&%¤/&%(/)(/(=)$@£$@£{€@£
这样的符号...
我做错了什么:(?
答案 0 :(得分:3)
我认为你的意思是(!namePattern.matcher(player.getName()).matches())
。
此外,您只能使用正则表达式匹配:[a-zA-Z0-9_-]{3,12}
,因为它会检查长度。
修改强>
您可以使用这样的功能
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
所以我删除了它们:)