正则表达式生成

时间:2011-05-05 11:30:24

标签: c# regex

我需要定期快递: 字母编号字母编号字母编号格式。 例如:"E7R8R9"。 以下是我的代码:

string txt = "G1R1A3";
// Any Single Word Character (Not Whitespace) 1
string re1 = "[a-z][0-9][a-z][0-9][a-z][0-9]";

Regex r = new Regex(re1, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match m = r.Match(txt);
if (m.Success)
{
    String w1 = m.Groups[1].ToString();
    Console.Write("(" + w1.ToString() + ")" + "\n");
}
Console.ReadLine();

但是这段代码也匹配"GG1R1A3"。 请帮忙。

4 个答案:

答案 0 :(得分:3)

您的代码正在字符串中的任何位置搜索模式。如果要将其锚定到字符串的开头(和结尾),请使用^$

    string re1 = "^[a-z][0-9][a-z][0-9][a-z][0-9]$";

答案 1 :(得分:1)

您可以使用此正则表达式更短的方式

       string strRegex = @"^([A-Z]\d){3}$";

        Regex myRegex = new Regex(strRegex);
        string strTargetString = @"E7R8R9";
        Match myMatch = myRegex.Match(strTargetString);
            if (myMatch.Success)
            {
                // Add your code here
            }

答案 2 :(得分:0)

您的正则表达式仅匹配小写字母,但您的示例使用大写字母。

如果您只想匹配大写字母,请使用:

[A-Z][0-9][A-Z][0-9][A-Z][0-9]

如果您想匹配大写和小写字母,请使用:

[a-zA-Z][0-9][a-zA-Z][0-9][a-zA-Z][0-9]

答案 3 :(得分:0)

ibhub:你的尝试只考虑小写:尝试运行你的正则表达式不区分大小写或使用[a-zA-Z]而不是[a-Z]