c# - 必须至少有一个字母的正则表达式

标签 c# regex

我有一个案例,我使用正则表达式队列来过滤掉观察者模式中的特定项目。过滤器将根据值将值放置在特定控件中。然而,控件模式之一是它可以接受任何 ASCII 字符。让我用正则表达式按顺序列出过滤器

Column         Rule                        Regex
Receiving     7 DIGITS                     @"^[1-9]([0-9]{6}$)"   --->Works
Count         2 digits, no leading 0       @"^[1-9]([0-9]{0,1})$" --->Works
Producer      any ASCII char.              @".*"                  --->too broad
              MUST contain a letter

是否有一个正则表达式可以接受任何一组 ASCII 字符,但其中一个必须是字母(大写或小写)? @"^(?=.*[A-Za-z])$"-->没用

需要表达的例子

  • 123红
  • 红色
  • 123 红123
  • 红色 - 123

红色

最佳答案

如果你想匹配你可能使用的整个 ASCII 字符范围

@"^(?=[^A-Za-z]*[A-Za-z])[\x00-\x7F]*$"

如果只允许使用可打印的字符

@"^(?=[^A-Za-z]*[A-Za-z])[ -~]*$"

请注意 (?=[^A-Za-z]*[A-Za-z]) 正先行位于 ^ 之后,即它仅在字符串的开头触发。它要求在 ASCII 字母以外的任何 0 个或更多字符后跟一个 ASCII 字母。

您的 ^(?=.*[A-Za-z])$ 模式不起作用,因为您想要匹配一个空字符串 (^$)包含 (?=...) 在除换行符 (.* )。

关于c# - 必须至少有一个字母的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56275824/

相关文章:

c# - 获取方法中的参数名称(并用作字典键?)

c# - 附加到表达式

c# - 视频自动播放不起作用

java - 是否可以使用 $x 从 Matcher 获取组?

javascript - 如何在保留边界字符的情况下分割字符串?

javascript - 通过 Javascript 正则表达式选择不是特定单词的所有单词?

c++ - 匹配由符号分隔并忽略空格的重复单词

c# - SelectedItem 更改文本 block 变量

c# - 带文件依赖项的 ASP.NET 缓存 : static var vs. AspNet 缓存与 memcached

javascript - 正则表达式使匹配不那么贪婪