C# 两个字符的正则表达式
如何构造正则表达式以允许输入CA或CH? 已尝试\bCA|H和CA|H,但我需要在文本框的按键事件中验证它,如下所示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
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。是罗斯林,对吗?