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

Swift中如何用正则匹配无小数点数字结尾带单个$符号的字符串

正确正则实现及说明

问题原因

你之前的写法存在三处问题:

  • 未包含需要匹配的$符号规则
  • 仅支持单数字匹配,未覆盖多位数场景
  • 没有对正则元字符$做转义,也没有限制字符串结尾规则,会出现非法匹配

正确正则表达式

符合要求的正则写法为 ^[0-9]+\$$,各部分作用说明:

  • ^:匹配字符串的起始位置,确保数字前没有多余字符
  • [0-9]+:匹配1位及以上的纯阿拉伯数字,满足「无小数点的任意数字」要求
  • \$:匹配字面量$符号,因为$在正则中本身是代表字符串结尾的元字符,需要加反斜杠转义才能匹配字符本身
  • $:匹配字符串的结束位置,确保$后没有其他字符,避免匹配到1$Foo、12$$这类不符合要求的字符串

修正后的Swift代码

func isValidItem(_ item: String) -> Bool {
   let pattern = #"^[0-9]+\$$"#
   return item.range(of: pattern, options: .regularExpression) != nil
}

效果验证

用你提供的示例测试:

  • 匹配成功的项:"1$"、"20$"
  • 匹配失败的项:"Foo"、"Foo1"、"Foo$"、"$Foo"、"1Foo"、"1$Foo"、"12$$",完全符合需求

正则学习资源推荐

常用的优质学习资料如下:

  • 入门级:《正则表达式30分钟入门》教程、《正则表达式必知必会》小册,适合快速掌握基础用法
  • 官方参考:MDN 正则表达式文档、各编程语言官方正则相关文档,适合查询语法细节
  • 练习工具:可以用各类在线正则测试工具辅助调试,实时查看匹配效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:36:04