ClientId中的正则表达式匹配ID

时间:2012-02-02 14:28:24

标签: c# regex

我的代码中有一个正则表达式,用于匹配表单POST中的键(控制ClientId)。我循环遍历表单数据中的所有键,并在找到匹配项时执行所需的操作。

然而,正则表达式匹配的次数比我需要的次数多。这可以在每个请求上运行,如果执行不必要的代码,也可以。

Match match = Regex.Match(key.ToLower(), @"(?!\$)(?:[a-z0-9]+)$",
                          RegexOptions.Compiled);

核心匹配的示例字符串

master$maincontentplaceholder$ucsearchresults$hdnvalue
master$maincontentplaceholder$ucsearchresults$hdnvalue2
master$maincontentplaceholder$ucsearchresults$hdnvalue3

然后我有一个开关语句,其中包含与控件ID匹配的案例

case: "hdnvalue"
case: "hdnvalue2"
case: "hdnvalue3"

表单还返回了大量不需要处理的额外键。如果我可以在正则表达式中排除这些匹配,那将是很好的。 (请注意额外的客户端ID级别$ucfilter

master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue
master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue2
master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue3

2 个答案:

答案 0 :(得分:1)

你必须描述更正式接受的格式,这个正则表达式将通过你给出的标准:

^([a-z0-9]+\$){3}[a-z0-9]+$

答案 1 :(得分:0)

如果你没有/没有/使用正则表达式,你可以用LastIndexOf(“$”)做得更好

using System;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = "master$maincontentplaceholder$ucsearchresults$ucfilter$hdnvalue";
            string id = text.Substring(text.LastIndexOf("$") + 1);
            Console.WriteLine(id);
            Console.ReadLine();
        }
    }
}