[英]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.