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

Swift正则表达式使用Unicode编码匹配不生效问题咨询

问题根因

你使用的#"..."#是Swift的原始字符串字面量,该语法会默认关闭反斜杠的转义解析效果,你写的\u{4E00}不会被Swift提前解析为对应Unicode字符,正则引擎实际收到的匹配规则是字面量字符串[\u{4E00}-\u{9FFF}],并非你预期的U+4E00到U+9FFF的码位范围,因此匹配失败。

修复方案

可任选以下任意一种方式修改即可:

  • 放弃使用原始字符串字面量,改用普通字符串,对反斜杠做二次转义,让Swift先完成Unicode字符解析再传入正则:
var patternMatchesWithUnicode: Bool {
    return self.range(of: "[\\u{4E00}-\\u{9FFF}]", options: .regularExpression) != nil
}
  • 保留原始字符串字面量,使用原始字符串专属的#\转义前缀触发Unicode解析:
var patternMatchesWithUnicode: Bool {
    return self.range(of: #"[\#u{4E00}-\#u{9FFF}]"#, options: .regularExpression) != nil
}

修改后两个方法的输出均为true,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:51:04