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

Swift中如何判断字符串是否为带小数位的合法十进制数?

Swift精准验证带小数点的数字字符串问题

你的问题在于Decimal(string:)的解析逻辑过于宽松,它会将纯整数(如"56")、甚至部分不符合你要求的格式(如".")都解析为有效的Decimal实例,所以无法满足你“必须包含小数点且其后为整数”的验证需求。

要实现精准匹配,推荐使用正则表达式来严格校验字符串格式:

func isDecimal(str: String) -> Bool {
    // 正则规则:允许小数点前有0个或多个数字,小数点后至少有1个数字,无其他字符
    let decimalPattern = #"^\d*\.\d+$"#
    return str.range(of: decimalPattern, options: .regularExpression) != nil
}

测试验证

  • isDecimal("56.0") → true(符合要求)
  • isDecimal("56") → false(无小数点)
  • isDecimal(".") → false(小数点后无数字)
  • isDecimal("15.a") → false(包含非数字字符)
  • isDecimal("15.") → false(小数点后无数字)
  • isDecimal("15.#") → false(包含非数字字符)

如果你的需求要求小数点前必须有至少一个数字(即不允许".123"这类格式),只需把正则表达式修改为:

let decimalPattern = #"^\d+\.\d+$"#

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 23:33:13