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

标签 c# regex

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

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

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

最佳答案

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

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

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

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

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

关于c# 正则表达式问题 : only letters, 数字和一个点(2 到 20 个字符)允许,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850005/

相关文章:

c# - 未调用种子方法, Entity Framework 6

java - 空格匹配正则表达式 - Java

python - R正则表达式从字符串中提取信息

MySQL 正则表达式 : Find string exept between two characters

c# - 将泛型 IEnumerable<T> 转换为 IEnumerable<KeyValuePair> (C#)

c# - Linq to SQL 中的多值比较

JavaScript 执行返回 null

Java 和正则表达式 : Matching a substring that is not preceded by specific characters

xna - Microsoft 错误 "WinForms Series 1: Graphics Device"

c# - 类型转换类型的扩展方法