主要是我正在使用正则表达式,我的代码本质上是什么,如果它不包含正则表达式中的字符,则发送客户端返回代码。我的问题是,我不知道如何允许空格。 目前这是我的代码,我想允许空格,a-z,A-Z和0-9。
if (username.length() < 1 || username.length() >= 13
|| !username.matches("[a-zA-Z_0-9]"))
{
session.getLoginPackets().sendClientPacket(3);
return;
}
答案 0 :(得分:2)
您正在寻找的正则表达式是[a-zA-Z_0-9][a-zA-Z_0-9 ]*
,假设您不希望名称以空格开头。
答案 1 :(得分:2)
在字符类中使用\ w元序列(单词,字母,下划线),以及一个空格(或者也可以匹配制表符):
var pattern = @"[\w ]{1,12}"; //c#, validates length also.
编辑:这似乎仅适用于单个间距,但不会验证长度:
var pattern = @"^(\w+\s?)+$";
答案 2 :(得分:2)
我很确定你想要符合Unicode,所以你应该使用
[\p{L}\p{Nd}][\p{L}\p{Nd} ]*
我创建了两个字符类以确保它不是以空格开头,如果不需要此检查,只需删除第一个类并将第二个类的量词更改为+
。
\ p {Nd}或\ p {Decimal_Digit_Number}:除表意文字脚本外的任何脚本中的数字0到9。
\ p {L}或\ p {Letter}:任何语言的任何类型的信件。
答案 3 :(得分:1)
试试这个
if (username.length() < 1 || username.length() >= 13
|| !username.matches("[a-zA-Z0-9 ]+"))
{
session.getLoginPackets().sendClientPacket(3);
return;
}