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

C# 必须至少有一个字母的正则表达式,c#,regex,C#,Regex,我有一个例子,我使用正则表达式队列过滤观察者模式中的特定项。过滤器将根据值将值放置在特定控件中。然而,控制模式的一个特点是它可以接受任何ASCII字符。让我以正则表达式的顺序列出过滤器 Column Rule Regex Receiving 7 DIGITS @"^[1-9]([0-9]{6}$)" --->Works Count 2 digits, no le

我有一个例子,我使用正则表达式队列过滤观察者模式中的特定项。过滤器将根据值将值放置在特定控件中。然而,控制模式的一个特点是它可以接受任何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字符,但其中1个必须是字母(大写或小写)? @“^(?=.[A-Za-z])$”-->不起作用

需要表达的示例

  • 123红色
  • 红色的
  • 123红色123
  • 红色-123
红色的怎么样
^.[a-zA-Z]+.*$


在行首和行尾之间,接受任意数量的任意字符,然后至少接受一个a-z/a-z字符,然后再接受任意数量的任意字符。

您可以尝试
[a-Za-z]+


至少有一个字母时匹配。您想要更具体的吗?

如果您想要匹配整个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])$
模式不起作用,因为您希望匹配一个空字符串(
^$
),该字符串在任何0+字符(除换行符(
*
)之后至少包含一个ASCII字母(
[A-Za-z]
)。除了,从技术上来说,回答OP的问题不需要“+”。这将匹配至少一个字母,但我们只关心有一个字母。
[a-z]
匹配的不仅仅是字母,它无法工作。它也不能处理包含换行符(ASCII字符)的字符串。@WiktorStribiżew oops,一种键入(a-z范围)。不过,
*
与BMP平面中的任何Unicode代码单位匹配。