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

Objective-C正则匹配空格时触发U_REGEX_INVALID_RANGE错误排查

正则表达式范围无效错误的原因与解决办法

嘿,这个问题我太熟了!你遇到的U_REGEX_INVALID_RANGE错误,根源出在正则字符组里的那个-符号上。

在正则的方括号[]字符组中,-是个特殊角色:当它夹在两个字符中间时,会被当作范围运算符(比如A-Z就表示从大写A到大写Z的所有字母)。你写的正则[A-Za-z_.- ]里,.-这部分被正则引擎解析成了“从.到空格”的字符范围,但ASCII编码里,.的码值是46,空格的码值是32——范围是从大到小的,这在正则规则里是不被允许的,所以直接触发了“无效范围”的错误。

解决办法有两种,选哪种都可以:

  • 把-移到字符组的开头或者结尾,让它脱离“夹在两个字符中间”的位置,这样就会被当作普通连字符处理。比如:
    [A-Za-z_. -]{2,39}  // 把-放在空格前
    // 或者
    [-A-Za-z_. ]{2,39}  // 把-放在最开头
    
  • 给-加反斜杠转义,明确告诉正则引擎这就是一个普通字符,不是范围运算符:
    [A-Za-z_\-. ]{2,39}
    

修正之后,再去匹配“John Smith”这类带空格的全名就不会报错啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:14:35