c# - 用于验证字母数字字符串长度的正则表达式

标签 c# .net regex validation alphanumeric

我有以下正则表达式:

^[a-zA-Z0-9]+( [a-zA-Z0-9]+)*$

我正在尝试验证 0-10 个字符之间的字符串,该字符串不能连续包含两个以上的空格或不能为空。该字符串不能包含任何特殊字符,可以不区分大小写,并且可以包含连字符。

如何将输入限制在 0-10 个字符之间?

我试过了

^[a-zA-Z0-9]+( [a-zA-Z0-9]+{0,10})*$

但它不起作用。

最佳答案

我会这样做:

^(?!.*  )(?=.*[\w-])[\w -]{1,10}$

这使用否定的前瞻性 (?!.* ) 断言没有两个连续的空格,并使用肯定的前瞻性 (?=.*[\w- ]) 断言它至少有一个非空格字符(我假设“空”意味着“只有空格”)。

注意,如果不能为“空”,则不能为零长度,所以长度范围必须是1-10,不能是0-10。

值得注意的是,如果破折号是第一个或最后一个字符,则您无需转义字符类中的破折号。

关于c# - 用于验证字母数字字符串长度的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17854514/

相关文章:

c# - 设计问题——继承是简化代码的正确方法吗?

c# - 仅当来自比较可枚举的所有(非原始)值都包含在目标可枚举中时才返回结果的查询

c# - MVVM:来自 FileOpenPicker 的图像绑定(bind)源

.net - 如何从 ArrayList 转换为 cli::array?

.net - 替换整行会产生重复出现的替换文本

c# - 什么时候需要使用 x86 或 x64 目标平台?

r - 如何在 R 的正则表达式中仅提取捕获组

python - Python 有流式正则表达式模块吗?

java - IPV6 地址在 Java 中转换为压缩形式

c# - 正则表达式 - 同一模式多次出现之间的文本