You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#编写匹配eq、bt等条件操作数字符串的正则表达式求助

C# 操作符表达式校验正则解决方案

原有正则的问题

  • 正则内多余的空格会被识别为匹配规则,要求操作符、冒号前后必须存在空格,不符合实际输入格式
  • \w是多余规则,会额外匹配操作符后的任意字母/数字/下划线,不符合固定操作符的校验要求
  • 没有区分bt和其他操作符的规则,无法限制非bt操作符出现范围格式
  • 没有加结束限定符$,会导致后面接任意非法字符也能匹配通过,比如eq:5***也会被误判为合法

最终可用正则

C# 逐字字符串写法:
@"^(?:(eq|ne|gt|lt|ge|le|ct):\d+|bt:\d+-\d+)$"

规则说明

  • ^匹配字符串开始,$匹配字符串结束,确保整个字符串完全符合规则,不会出现前后多余的非法字符
  • 第一分支(eq|ne|gt|lt|ge|le|ct):\d+匹配非bt的操作符,后面只允许跟冒号加纯数字,不允许出现减号等其他字符
  • 第二分支bt:\d+-\d+$匹配bt操作符,后面固定为「数字-数字」的范围格式
  • 如果你需要支持负数的操作数,可以把\d+替换为-?\d+,即可匹配类似lt:-3、bt:-5-2这类格式
  • 如果业务允许冒号前后存在空格,可将正则调整为@"^(?:(eq|ne|gt|lt|ge|le|ct)\s*:\s*\d+|bt\s*:\s*\d+-\d+)$",\s*会匹配0到多个空白字符

C# 校验代码示例

using System;
using System.Text.RegularExpressions;

public class OperatorValidator
{
    // 正则预编译,提升高频调用的性能
    private static readonly Regex _operatorRegex = new Regex(@"^(?:(eq|ne|gt|lt|ge|le|ct):\d+|bt:\d+-\d+)$", RegexOptions.Compiled);
    
    public static bool Validate(string input)
    {
        if (string.IsNullOrWhiteSpace(input)) 
            return false;
        return _operatorRegex.IsMatch(input);
    }
}

// 调用示例
// bool isValid1 = OperatorValidator.Validate("eq:5"); // 返回true
// bool isValid2 = OperatorValidator.Validate("bt:8-9"); // 返回true
// bool isValid3 = OperatorValidator.Validate("eq:4-6"); // 返回false
// bool isValid4 = OperatorValidator.Validate("eq:**+4"); // 返回false

测试用例参考

  • 合法输入:eq:5、bt:8-9、ge:100、lt:0
  • 非法输入:eq:4-6、eq:**+4、bt:12、bt:a-3、ne: 12、gt:5x

内容的提问来源于stack exchange,提问作者Aԃιƚყα Gυɾαʋ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:57:00