C#.NET REGEX:前3个字符必须是1-100和第二3个字符之间的数字



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

我尝试过;

^([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} $"(;

if(r.ismatch(textbox1.text(({ MessageBox.Show(" OK"(;} 别的 { 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]与可选领先0
    • 匹配1-9
  • ){3}关闭非捕获组并重复3次
  • [a-zA-Z]{3}匹配A-Z A-Z 3次
  • $字符串结束

REGEX DEMO

您的描述不是100%清晰。

您的描述在口头上为:3个字符,形成1至100个数字,然后是3个字符,可以是任何字符。

因此,第一个块意味着001至100,第二个块是任何字符,因此可以是" AAA",但也可以是" 123"或" ..."

在正则表达式中,您使用了字符串(^ and $(的开始和结尾,因此必须精确匹配。但是,您的示例是错误的,因为您给出了超过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/

上测试正则表达式

当然:如果您想要完整的匹配项,则必须再次添加 ^和$。如果您不想要任何字符,请替换。带有您要允许的字符。

相关内容

  • 没有找到相关文章

最新更新