首页 > 解决方案 > C# .Net RegEx:前 3 个字符必须是 1-100 之间的数字,后 3 个字符可以是任何字符

问题描述

我正在尝试为控制台应用程序设置 RegEx。我的问题是定义正则表达式。

我试过了;

^([1-9][0-9]?|^100){3}[a-zA-Z]{3}$

^[0-9]{3}[a-zA-Z]{3}$

但我无法解决它。

正则表达式 r = new Regex(@"^([1-9][0-9]?|^100){3}[a-zA-Z]{3}$");

if (r.IsMatch(textBox1.Text)) { MessageBox.Show("OK"); } else { MessageBox.Show("NO"); }

第一个 3 必须是 1-100 之间的数字,第二个 3 必须是任意三个字符,例如“ 123ABC ”或“ 405006ghd ”或“ 7093zyx ”。

标签: c#.netregex

解决方案


在您的模式中,您可以删除^from,^100因为它已经在模式的开头指定。

在您的示例中,数据405006ghd不匹配,因为[1-9][0-9]?不允许前导零,因此无法匹配06

您可以匹配 100、数字 1 - 99 或数字 0-9 以及可选的前导零:

^(?:100|[1-9][0-9]|0?[1-9]){3}[a-zA-Z]{3}$

详细地

  • ^字符串的开始
  • (?:非捕获组
    • 100从字面上匹配
    • |或者
    • [1-9][0-9]比赛 10 - 99
    • |或者
    • 0?[1-9]匹配 1-9 和可选的前导 0
  • ){3}关闭非捕获组并重复 3 次
  • [a-zA-Z]{3}匹配 az AZ 3 次
  • $字符串结束

正则表达式演示


推荐阅读