C# 两个字符的正则表达式

C# 两个字符的正则表达式,c#,regex,C#,Regex,如何构造正则表达式以允许输入CA或CH? 已尝试\bCA|H和CA|H,但我需要在文本框的按键事件中验证它,如下所示 private Regex _regex = new Regex(@"C(A|H)"); private void txtCaCh_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsControl(e.KeyChar)) return; if (!_rolfRegex.IsMat

如何构造正则表达式以允许输入CA或CH? 已尝试\bCA|H和CA|H,但我需要在文本框的按键事件中验证它,如下所示

private Regex _regex = new Regex(@"C(A|H)");

private void txtCaCh_KeyPress(object sender, KeyPressEventArgs e)
{
    if (char.IsControl(e.KeyChar))
        return;

    if (!_rolfRegex.IsMatch(e.KeyChar.ToString().ToUpper()))
        e.Handled = true;
}
您的图案必须是^C[AH]$。输入开始^,接着是C,然后是A或H[AH]和输入结束$

您的图案必须是^C[AH]$。输入开始^,接着是C,然后是A或H[AH]和输入结束$

验证控件本身的内容,而不是验证e.KeyChar:

if(!_rolfRegex.IsMatch((sender as TextBox)?.Value.ToUpper())
    e.Handled = true;
验证控件本身的内容,而不是验证e.KeyChar:

if(!_rolfRegex.IsMatch((sender as TextBox)?.Value.ToUpper())
    e.Handled = true;
你可以用

if (e.KeyChar != (char)8)  // Not a backspace key
   if (!Regex.IsMatch(txtCaCh.Text.ToUpper() + e.KeyChar.ToString().ToUpper(), @"^C[AH]?$"))  // If the value is not CH or CA
       e.Handled = true;   // Do not let it pass
在KeyPress事件处理程序中,txtCaCh.Text包含添加下一个键之前的值。因此,要获得完整值,我们需要添加新按下的键值。之后,我们可以检查该值是否是我们可以接受的值

^C[AH]?$
这个正则表达式接受C、CA或CH值,以便我们可以输入它们

然后,您需要在其他事件中使用^C[AH]$Leave事件来验证它,例如

实时验证不能与最终验证同时执行。

您可以使用

if (e.KeyChar != (char)8)  // Not a backspace key
   if (!Regex.IsMatch(txtCaCh.Text.ToUpper() + e.KeyChar.ToString().ToUpper(), @"^C[AH]?$"))  // If the value is not CH or CA
       e.Handled = true;   // Do not let it pass
在KeyPress事件处理程序中,txtCaCh.Text包含添加下一个键之前的值。因此,要获得完整值,我们需要添加新按下的键值。之后,我们可以检查该值是否是我们可以接受的值

^C[AH]?$
这个正则表达式接受C、CA或CH值,以便我们可以输入它们

然后,您需要在其他事件中使用^C[AH]$Leave事件来验证它,例如


实时验证不能与最终验证同时执行。

是的,但e.KeyChar是一个字符。@Irshad:您需要从发送方获取文本,即TextBox。我编辑了我的答案。在按键事件txtBox中。Text ret运行文本框中的内容,而不是我输入的字符。是的,但是e.KeyChar是一个字符。@Irshad:您需要从发送者那里获取文本,它是textbox。我编辑了我的答案。在按键事件txtBox中。Text ret运行文本框中的内容,而不是我输入的字符。当您使用一个字符调用函数时,如何匹配由多个字符组成的字符串?您需要对字符进行聚合,然后尝试匹配它们。@WiktorStribiżew您应该将此作为答案发布。我添加了我的答案。请检查。当您使用一个字符调用函数时,如何匹配由多个字符组成的字符串?您需要对字符进行聚合,然后尝试匹配它们。@WiktorStribiżew您应该将此作为答案发布。我添加了我的答案。请选中。在按键事件txtBox中。Text返回文本框中的内容,而不是我刚才输入的字符。此语法不适用于我正在使用的.net 4。是Roslyn,对吗?在按键事件txtBox中。文本返回文本框中的内容,而不是我刚才输入的字符。此语法不适用于我正在使用的.net 4。是罗斯林,对吗?