c# - 两个字符的正则表达式

标签 c# regex

如何构造一个Regex 来允许输入CACH? 尝试了 \bC(A|H)C(A|H) 但我需要在 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]?$

此正则表达式接受 CCACH 值,以便我们可以输入它们。

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

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

关于c# - 两个字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35061533/

相关文章:

c# - 锁定跨多个线程使用的对象中的关键部分

c# - 来自 .aspx 页面的输出文件

Java:使用正则表达式拆分字符串而不删除定界符

python 正则表达式不使用 re.match 和 re.MULTILINE 标志匹配文件内容

regex - Eclipse:如何搜索字符串,但不在注释中

javascript - asp.net web api 405方法不允许,发布,自定义操作

c# - 如何使用 EntityFramework Core 创建两个模块之间的关系?

c# - 为什么将数组分配给 null 会创建一个空数组?

正则表达式 - 如果包含 '%' ,则只能包含 '%20'

regex - 如何在 vb6 中使用正则表达式提取文本