c# - 带前导空格的确切字符数

标签 c# regex

我正在尝试弄清楚如何匹配以下规则...

  • 正好 4 个字符(字母数字)或零个字符
  • 如果只用于左侧填充,字符可以有空格
  • 不能只包含 4 个空格

可接受的匹配示例:

""
"  43"
" D42"

Not Acceptable 匹配示例:

"1 A3"
"1   "
"    "
"A 1 "

我试过使用以下正则表达式,但它没有给出预期的结果。

(([\s]*[0-9A-Z]*){4}|)

最佳答案

正则表达式在计数方面不是很好,但是当数字很低时,例如四,您可以构建一个简单的重复正则表达式来完成这项工作:

^(|[0-9A-Z]{4}| {1}[0-9A-Z]{3}| {2}[0-9A-Z]{2}| {3}[0-9A-Z]{1})$

此正则表达式列出了一个空字符串,以及四种可接受的空格用法:

  • 没有空格,四个字符
  • 一个空格,三个字符
  • 两个空格,两个字符
  • 三个空格,一个字符

Demo.

关于c# - 带前导空格的确切字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41836744/

相关文章:

C# 域模型 + 存储库 : Where to put code that loads an entity

c# - 为什么在没有安装 VS.NET 的情况下 C# winforms 应用程序无法运行?

c# - List 和 IEnumerable 之间的实际区别

c# - 当我想继承和添加属性时如何处理密封类

mysql - 在逗号分隔值列中查找逗号分隔子组的最佳 mysql 查询是什么

regex - Shell 脚本 Sed - 如何仅在第一次出现字符串时读取文件并写入另一个文件?

c# - 使用和不使用私有(private)访问器的单元测试

java - 正则表达式电子邮件验证长度

r - 将数据集中的行组合成 R 中的类别

c# - 在 StringBuilder 上替换 Regex 的最佳方法是什么?