c#中的正则表达式允许数字和字母表

时间:2013-10-13 04:08:22

标签: c# regex

我正在尝试编写一个允许不同输入集的正则表达式。

前9个字符应为数字 - 123456789

10个字符是可选的,如果存在,则应为Alphabet - 123456789A

11字符如果预设应为aplphanumeric - 123456789AA或123456789A1

12 - 14字符如果预设应为数字 - 123456789AA123或123456789A1123

我试过了,但它没有用..

 string sMatch = "^[0-9]{9}([a-zA-Z])\?{1}([0-9A-Za-z])\?{1}([0-9])?{1}([0-9])\?{1}$";
            System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(sMatch);

3 个答案:

答案 0 :(得分:1)

我不知道c#的正则表达式实现,但是如何:

\d{9}[a-zA-Z]?[a-zA-Z0-9]?\d{0,3}

答案 1 :(得分:1)

尝试以下

string sMatch = "^(?i)\\b\\d{9}[a-z]?[^\W_]?\\d{0,3}\\b$";

请参阅live demo

答案 2 :(得分:0)

一个。您需要在字符串中的第一个引号之前加上一个“@”字符,以将其标记为字符串文字,以便它处理\?正常。

B中。我将其分解为几个语句,IE:

string preset1 = @"^[0-9]{9}", preset2 = @"[a-zA-Z]{1}", preset3 = @"[0-9A-Za-z]{1}", 
    preset4 = @"[0-9]{3}$";
if (Regex.IsMatch(input, preset1){
    //Do fits first preset
    if (Regex.IsMatch(input, preset1 + preset2){
        //Do fits second preset
        if (Regex.IsMatch(input, preset1 + preset2 + preset3)){
            //Do fits third preset
            if (Regex.IsMatch(input, preset1 + preset2 + preset 3 + preset4)){
                //Do fits fourth preset
            }
        }
    }
}