繁体   English   中英

C#.Net RegEx:前3个字符必须为1-100之间的数字,第二个3个字符可以为任何字符

[英]C# .Net RegEx: first 3 char must be a number between 1-100 and second 3 char can be any char

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

我试过了;

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

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

但我无法解决。

Regex r = new Regex(@“ ^([1-9] [0-9]?| ^ 100){3} [a-zA-Z] {3} $”);

如果(r.IsMatch(textBox1.Text)){MessageBox.Show(“ OK”); } else {MessageBox.Show(“ NO”); }

前3个数字必须介于1到100之间,后3个数字必须是任意三个字符,例如“ 123ABC ”或“ 405006ghd ”或“ 7093zyx ”。

在您的模式中,您可以从^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次
  • $字符串结尾

正则表达式演示

您的描述不是100%清楚。

您的口头描述是:3个字符组成1到100之间的数字,然后3个字符可以是任何字符。

因此,第一个块表示001到100,第二个块是任何字符,因此可以是“ aaa”,也可以是“ 123”或“ ...”

在正则表达式中,您使用了字符串的开头和结尾(^和$),因此匹配必须准确。 但是然后您的示例是错误的,因为您提供的示例包含超过6个字符...

但是,让我们开始一些正则表达式的构建:我们知道,第一个字符是0或1,随后的字符是0-9范围内的字符。 因此,我们可以从[01] [0-9] [0-9]开始。 但这还包括000,但我们想从001开始。

因此,我们排除了000:(?!000)[01] [0-9] [0-9]

编辑:我错过了这里的上限100。 因此,我建议您使用类似100 | 0 [1-9] [0-9] | 00 [1-9]的方法,该方法不需要任何排除并且更易于阅读。

最后3个字符现在很容易:。{3}匹配任意3个字符。

因此,我们得到了结尾:(?:100 | 0 [1-9] [0-9] | 00 [1-9])。{3}

您可以在https://regex101.com/上测试正则表达式

当然:如果要完全匹配,则必须再次添加^和$。 如果您不想使用任何字符,请替换。 与您要允许的字符一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM