Skip to main content
 首页 » 编程设计

c# 正则表达式问题 : only letters, 数字和一个点(2 到 20 个字符)允许

2024年01月13日34落叶无声

我正在与我的正则表达式搏斗。 我只想在用户名中使用字母、数字和一个点,长度为 2 到 20 个字符 我想到了这样的事情

[0-9a-zA-Z]{2,20}

但是 21 个字符也可以,这不是我想要的

请您参考如下方法:

我建议您进行两项检查 - 一项检查长度,一项检查内容,因为您可能只需要名称中的一个点,而不是任意数量的点。我假设像 username 和 user.name 这样的名称是唯一允许的格式。

这应该得到内容(但也允许下划线):

^\w+(\.\w+)?$ 

如果您不需要下划线,那么您可以使用 [0-9a-zA-Z]+ 代替 \w+。解释一下,它将匹配由一个或多个单词字符组成的任何字符串,后跟恰好 0 或 1 个点,然后是一个或多个单词字符。它还必须匹配字符串的开头和结尾,即字符串中不允许有其他字符。

然后你只需要通过简单的长度检查就可以得到长度。