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

验证邮箱/手机号时遇正则报错:Quantifier {x,y} following nothing 求助

解决正则表达式的Quantifier异常问题

我一眼就看出你遇到的问题了——你的正则表达式写法犯了一个很常见的量词使用错误!

错误原因分析

报错信息里的Quantifier {x,y} following nothing意思是:你用了量词{2},但这个量词前面没有任何要重复匹配的元素。看你写的"{2}[0-9]-{3}[0-9]",这里的{2}是飘在半空的,正则引擎完全不知道你要重复什么内容,自然就抛出异常了。

看起来你应该是想匹配「2位数字 + 连字符 + 3位数字」的格式(比如邮编或者手机号片段),那正确的写法应该是把量词放到要重复的元素后面。

修正后的代码

把你的正则表达式改成这样:

public class Order {
    // 修正后的正则:匹配2位数字-3位数字,加上起止符确保完全匹配
    public string ZipCodeValidationPattern = @"^\d{2}-\d{3}$"; 
    public string ZipCode { get; set; }
    public string PhoneNumber { get; set; }
    
    private void SetZipCode(string zipCode) {
        // 用修正后的正则做验证
        if (System.Text.RegularExpressions.Regex.IsMatch(zipCode, ZipCodeValidationPattern)) {
            ZipCode = zipCode;
        } else {
            throw new ArgumentException("Invalid zip code format");
        }
    }
}

补充说明

  • \d是正则里匹配数字的简写,和[0-9]效果完全一致,写起来更简洁
  • 加上^(字符串开头)和$(字符串结尾)可以避免部分匹配的问题,比如不会把123-4567里的23-456误判为有效格式
  • 在C#里写正则字符串时,建议加上@符号避免转义问题(虽然这里\d不加@也能识别,但养成好习惯总是没错的)

内容的提问来源于stack exchange,提问作者Karol Pisarzewski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:38:40