[英]Regex for two characters
如何构造一个正则Regex
以允许输入CA
或CH
? 尝试过\\bC(A|H)
和C(A|H)
但是我需要像这样在textbox
的KeyPress
事件中对其进行验证;
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;
}
您可以使用
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
,而是验证控件本身的内容:
if(!_rolfRegex.IsMatch((sender as TextBox)?.Value.ToUpper())
e.Handled = true;
您的模式必须为^C[AH]$
。 输入开始( ^ ),跟随C,然后跟随A或H( [AH] ),然后结束输入( $ )。
private Regex _regex = new Regex(@"^C[AH]$");
private void txtCaCh_KeyPress(object sender, KeyPressEventArgs e)
{
if (char.IsControl(e.KeyChar))
return;
var txtBox = (TextBox)sender;
if (txtBox.Text != null && _rolfRegex.IsMatch(txtBox.Text.ToUpper()))
{
// TODO now we have match, handle it
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.