我正在尝试为控制台应用程序设置正则拨号。我的问题是定义正则表达式。
我尝试过;
^([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/
上测试正则表达式当然:如果您想要完整的匹配项,则必须再次添加 ^和$。如果您不想要任何字符,请替换。带有您要允许的字符。