首页 > 解决方案 > 如何在 C# 中使用 REGEX 检查等号字符串

问题描述

我想检查如下所示的字符串

第一 radius = 120

第二 radius = 'value'

这是我的代码

v1 = new Regex(@"^[A-Za-z]+\s[=]\s[A-Za-z]+$");
if (v1.IsMatch(singleLine))`
{
    ...
    ...
}

使用@"^[A-Za-z]+\s[=]\s[A-Za-z]+$"这个表达式,第二个字符串被匹配,但不是第一个,当使用这个时@"^[A-Za-z]+\s[=]\s\d{0,3}$",它只匹配第一个。

我也想检查radius = 'val01'

标签: c#.netregex

解决方案


如果您尝试的模式^[A-Za-z]+\s[=]\s[A-Za-z]+$与第二个字符串匹配radius = 'value',则意味着它'value'仅由字符 A-Za-z 组成。

在这种情况下,您可以将匹配的数字添加到第二个字符类:

^[A-Za-z]+\s=\s[A-Za-z0-9]+$

如果您想匹配 1-3 位数字或至少一个字符 A-Za-z 后跟可选数字:

^[A-Za-z]+\s=\s(?:[0-9]{1,3}|[A-Za-z]+[0-9]*)$

模式匹配:

  • ^字符串的开始
  • [A-Za-z]+\s=\s将第一部分与字符 A-Za-z 和=符号匹配(注意=不必在方括号之间)
  • (?:非捕获组
    • [0-9]{1,3}匹配 1-3 位数字(您可以使用\d{0,3},但由于 ,这也将匹配一个空字符串0
    • |或者
    • [A-Za-z]+[0-9]*匹配 1+ 个字符 A-Za-z,后跟可选数字
  • )关闭非捕获组
  • $字符串结束

正则表达式演示


推荐阅读