正则表达式与ClientId中的ID匹配

本文关键字:ID 匹配 中的 ClientId 正则表达式 | 更新日期: 2023-09-27 18:22:10

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

然而,regex匹配的次数比我需要的要多。这会在每个请求上运行,如果执行了不必要的代码,就会触发。

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

正则表达式与ClientId中的ID匹配

您必须描述更正式接受的格式,此正则表达式将通过您给定的标准:

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

如果您不/必须/使用regex,您可能会使用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();
        }
    }
}