![](/img/trans.png)
[英]Regex to remove first word and capitalize the first char of the second with c#
[英]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.