繁体   English   中英

无法在 static 上下文中访问非静态方法“IsMatch”

[英]Cannot access non-static method 'IsMatch' in static context

我无法弄清楚我在Regex.Match方法上遇到的简单编译错误。

错误说

无法在 static 上下文中访问非静态方法“IsMatch”

在此处输入图像描述

错误文本本身令人困惑,因为我调用的方法是正则Regex class 的 static 方法,而错误表明我无法在 statc 上下文中访问non-static方法。

My context is also not static because the method in which I have calling Regex.IsMatch function is a non-static method, even the class is also non static.

错误令人困惑!

当我像这样用 Regex 类的实例调用替换调用时,它可以工作

new Regex(@"/^(?:2[89]|[3-9]\d)\d{6,}$/").IsMatch(@"/^(?:2[89]|[3-9]\d)\d{6,}$/")

但是我完全困惑为什么我不能调用该类的 static 方法!

没有static方法IsMatch只接受一个参数。

IsMatch(string input, string pattern)static ,但是IsMatch(string input)不是,需要在已经被赋予模式的实例上调用(因为,考虑一下,如果这种方法是static我们只提供一个输入字符串给它?)

在这里您可以找到所有可用的重载。

您需要向Regex.IsMatch方法提供输入字符串。

但是,您还需要修改正则表达式并删除必须用作正则表达式分隔符字符的前导和尾随斜杠。 这些斜杠被视为模式的一部分,将阻止您的正则表达式匹配任何字符串。 请记住,正则表达式是用 C# 中的字符串文字 ( "..." ) 定义的,而不是用正则表达式文字 ( /.../ ) 定义的。

所以你需要使用

Regex.IsMatch(item.HSCode, @"^(?:2[89]|[3-9]\d)\d{6,}$")

此外,如果您只希望输入中的 ASCII 数字,请考虑使用[0-9]而不是\d ,请参阅\d 比 [0-9] 效率低

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM