简单字符串正则表达式

本文关键字:正则表达式 字符串 简单 | 更新日期: 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

你会发现它只符合你想要的。