首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在静态上下文中访问非静态方法“IsMatch”

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

Stack Overflow用户
提问于 2022-09-19 14:07:27
回答 2查看 73关注 0票数 0

我无法找出我在Regex.Match方法上遇到的简单编译错误。

错误说

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

错误文本本身是混乱的,因为我正在调用的方法是Regex类的静态方法,而错误说我不能在statc上下文中访问non-static方法。

我的上下文也不是static,因为调用Regex.IsMatch函数的方法是一个非静态方法,甚至类也是非静态的。

这个错误让人困惑!

当我用Regex类的实例调用替换调用时,它会工作,如下所示

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

但是我完全不明白为什么我不能调用类的静态方法!

EN

回答 2

Stack Overflow用户

发布于 2022-09-19 14:11:46

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

IsMatch(string input, string pattern)static,但是对于一个已经给出模式的实例,IsMatch(string input)不是并且需要被调用(因为,考虑一下,如果这个方法是static,并且我们只向它提供一个输入字符串,那么会使用什么模式?)

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

票数 3
EN

Stack Overflow用户

发布于 2022-09-19 14:14:05

您需要向方法提供一个输入字符串。

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

所以你需要用

代码语言:javascript
运行
复制
Regex.IsMatch(item.HSCode, @"^(?:2[89]|[3-9]\d)\d{6,}$")

另外,考虑使用[0-9]而不是\d,如果您只期望输入ASCII位数,请参阅D效率低于[0-9]

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73774704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档