我和我的正则表达式搏斗。 我想只允许字母和数字以及用户名中的一个点,以及2到20个字符长 我想到了这样的事情
[0-9A-ZA-Z] {2,20}
然后21个字符也可以,这不是我想要的
答案 0 :(得分:9)
我建议您进行两次检查 - 一次是长度检查,一种是基于您可能只需要名称中的一个点而不是任意数量的点的内容。我假设username
和user.name
等名称是唯一允许的格式。
这应该得到内容(但也允许下划线):
^\w+(\.\w+)?$
如果您不想使用下划线,则可以使用[0-9a-zA-Z]+
代替\w+
。为了解释,它将匹配由一个或多个单词字符组成的任何字符串,后跟正好是0或1的点后跟一个或多个单词字符。它还必须匹配字符串的开头和结尾,即字符串中不允许其他字符。
然后你只需要通过简单的长度检查来获得长度。
答案 1 :(得分:6)
^[0-9a-zA-Z\.]{2,20}$
答案 2 :(得分:6)
请尝试^[\w\.]{2,20}$
。
答案 3 :(得分:2)
您需要使用字符串的开头和结尾(^
和$
),然后转义.
:
^[0-9a-zA-Z\.]{2,20}$