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