简单字符串正则表达式

时间:2013-07-03 04:27:14

标签: c# regex

我正在尝试写一个非常简单的正则表达式 - 这个世界对我来说是全新的,所以我需要帮助。

我需要验证下一个模式:以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”。

我的模式有什么问题?

4 个答案:

答案 0 :(得分:3)

你必须使用这个正则表达式

^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

答案 1 :(得分:1)

^C0\d{4,}$

字符串必须以^开头C0,然后在字符串\d{4,}末尾加上4位或更多位$

如果它实际上不在字符串的末尾,只需摘下最后的$

如果您不打算将更多数字夹在中间,请删除逗号..

感谢\d{4,}的@femtoRgon(见评论)。

答案 2 :(得分:0)

请查看此代码段,

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);


    }
}

输出:

Pattern1匹配input1,值为:C0123456

Pattern2匹配input2,值为:C01234

Pattern1匹配input2,值为:C01234

答案 3 :(得分:-1)

如果你转到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

你会发现它只匹配你想要的东西。