如何计算 ASP.Net MVC 中正则表达式捕获的匹配数?

Posted

技术标签:

【中文标题】如何计算 ASP.Net MVC 中正则表达式捕获的匹配数?【英文标题】:How to count the number of matches captured by the regex in ASP.Net MVC? 【发布时间】:2019-11-12 15:52:18 【问题描述】:

我在计算正则表达式捕获的匹配数时遇到问题,因为它没有计数功能。

这是我的代码:

 var pathRegex = new Regex(".+?\\:\\/\\/.+? (\\/.+?)(?:#|\\?|$)");
 var result = pathRegex.Match(url);
            if (!(result.Success))
            
                pathRegex = new Regex("/\\/.*/");
                result = pathRegex.Match(url);

                if (result.Success && result.Length == 1)
                
                    return result.Value;
                else
                
                    return "";
                 
            

我试过result.Length,但它只计算匹配字符串的长度。您对此有什么建议或解决方法吗?

【问题讨论】:

你实际上在做什么?网址验证? 【参考方案1】:
MatchCollection matches = pathRegex.Matches(url);
var count = matches.Count;

Regex Class

【讨论】:

【参考方案2】:

Regex.Match 仅将第一个匹配项作为单个 Match 对象返回。 Ref。 因此,Count 不可用,if (result.Success) 足以满足您的情况。

如果你想要多个匹配项,你需要Regex.Matches,它会返回一个 MatchCollection。

【讨论】:

以上是关于如何计算 ASP.Net MVC 中正则表达式捕获的匹配数?的主要内容,如果未能解决你的问题,请参考以下文章

Asp .NET MVC 正则表达式

正则表达式问题(在 asp.net MVC5 中)

ASP.NET MVC学习之路由篇

有效的 RegEx 不适用于 ASP.Net MVC 正则表达式属性

ASP.NET MVC 正则表达式属性不适用于括号(文字)

asp.net mvc 路由约束正则表达式