我正在与我的正则表达式摔跤。 我想只允许字母和数字,并在用户名点,2〜20个字符长 我想到了这样的事情c#正则表达式问题:只允许字母,数字和点(2到20个字符)允许
[0-9A-ZA-Z] {2,20}
但随后21个字符也行,这不是我想要什么
我正在与我的正则表达式摔跤。 我想只允许字母和数字,并在用户名点,2〜20个字符长 我想到了这样的事情c#正则表达式问题:只允许字母,数字和点(2到20个字符)允许
[0-9A-ZA-Z] {2,20}
但随后21个字符也行,这不是我想要什么
我建议你做两个检查 - 一个长度和一个基于内容的事实上,你可能只需要名称中的一个点,而不是任何数量的点。我会假设像username
和user.name
这样的名称是唯一允许的格式。
这应该得到的内容(但允许下划线以及):
^\w+(\.\w+)?$
如果你不想下划线,那么你就代替\w+
使用[0-9a-zA-Z]+
。为了解释,它将匹配任何由一个或多个单词字符组成的字符串,后跟正好是0或1的点后跟一个或多个单词字符。它还必须匹配字符串的开头和结尾,即字符串中不允许其他字符。
然后你只需要通过一个简单的长度检查来获得长度。
非常好!是的,这个点有点困难。 .........可能是坏的,但jpvan.der.bilt可能是正确的 – Michel 2010-05-17 19:09:19
@Michel - 那么你可以将'(\。\ w +)?'改成'(\。\ w +)* '接受零个或多个而不是零个或一个。 – tvanfosson 2010-05-17 19:31:13
工作!谢谢。 – Michel 2010-05-18 09:56:06
^[0-9a-zA-Z\.]{2,20}$
我怀疑'........... .........'不允许。 – tvanfosson 2010-05-17 14:49:41
啊,开始和结束,谢谢 – Michel 2010-05-17 19:09:51
尝试^[\w\.]{2,20}$
来代替。
您需要使用的开始和结束字符串(^
和$
),并且逃脱.
:
^[0-9a-zA-Z\.]{2,20}$
我认为你需要更明确一点。我怀疑你想要一个由所有点组成的用户名。我认为它会更像'username'或'user.name',但'user.','.user'和'......'不是。 – tvanfosson 2010-05-17 14:54:43
我注意到有几千封信件被排除在外。那是故意的吗? – 2010-05-17 15:15:31
@tvanfosson好吧,它是管理功能,所以也会有一些用户的想法,但你是对的,我的算法不会限制这个 – Michel 2010-05-17 19:07:27