简单字符串正则表达式
本文关键字:正则表达式 字符串 简单 | 更新日期: 2023-09-27 18:20:57
我正在尝试编写非常简单的正则表达式——这个世界对我来说是全新的,所以我需要帮助。
我需要验证下一个模式:从C0开始,以4位数字结束,例如:
C01245 - legal
C04751 - legal
C15821 - not legal (does not starts with 'C0')
C0412 - not legal (mismatch length)
C0a457 - not legal
我拿着"备忘单"写下了下一个模式:
C0''A''d{4),意思是(我认为):从C0开始,以4位数字继续,但这种模式总是返回"false"。
我的图案怎么了?
您必须使用此regex
^C0'd{4}$
^
将标记字符串的开始
$
将标记字符串的结束
'd{4}
将匹配4位
你也可以这样做
if(input.StartsWith("C0") &&
input.Length==6 &&
input.Substring(2).ToCharArray().All(x=>Char.IsDigit(x)))
//valid
else //invalid
^C0'd{4,}$
字符串必须以C0
开头的^
,然后在字符串$
的末尾加上4位或更多的数字'd{4,}
。
如果最后一个$
实际上不在字符串的末尾,只需去掉它。
如果你不想在中间夹更多的数字,只需去掉逗号。。
感谢@femtoRgon的'd{4,}
(见评论)。
请看一下这个代码段,
using System.IO;
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string input1 = "C0123456";
// input1 starts with C0 and ends with 4 digit , allowing any number of
// characters/digit in between
string input2 = "C01234";
// input2 starts with C0 and ends with 4 digit , without
// characters/digit in between
String pattern1=@"'b[C][0][a-z A-Z 0-9]*'d{4}'b";
String pattern2=@"'b[C][0]'d{4}'b";
Match m = Regex.Match(input1, pattern1);
if(m.Success)
Console.WriteLine("Pattern1 matched input1 and the value is : "+m.Value);
m = Regex.Match(input2, pattern2);
if(m.Success)
Console.WriteLine("Pattern2 matched input2 and the value is : "+m.Value);
m = Regex.Match(input1, pattern2);
if(m.Success)
Console.WriteLine("Pattern2 matched input1 and the value is : "+m.Value);
m = Regex.Match(input2, pattern1);
if(m.Success)
Console.WriteLine("Pattern1 matched input2 and the value is : "+m.Value);
}
}
输出:
模式1匹配输入1,值为:C0123456
模式2匹配输入2,值为:C01234
模式1匹配输入2,值为:C01234
如果您转到http://gskinner.com/RegExr/你可以写下这个表达式:
^(C0[0-9]*[0-9]{4})[^0-9]
在你放的内容中:
C012345 - legal
C047851 - legal
C*1*54821 - not legal (does not starts with 'C0')
C0412 - not legal (mismatch length)
C0*a*4587 - not legal
你会发现它只符合你想要的。