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

求助:Swift正则表达式无法匹配"XXXX/XXXX"格式日期范围

解决正则匹配日期范围的问题

你遇到的问题出在正则表达式的转义错误上,我们一步步来修正:

问题根源

你写的正则"\\[0-9]{4}\\/\\[0-9]{4}"里,错误地给[加了转义符\,导致正则会去匹配字面量的[字符,而不是匹配数字范围0-9。这就难怪明明字符串里有目标格式,却匹配不到了。

修正后的正则写法

有两种可行的修正方案:

方案1:正确使用数字范围匹配(去掉[前的转义)

let regex = "[0-9]{4}\\/[0-9]{4}"
if let range = myString.range(of: regex, options: .regularExpression) {
    let matchedText = String(myString[range])
    print("匹配到的日期范围:\(matchedText)")
}

方案2:使用\d简化数字匹配(注意Swift字符串里\需要双写)

\d是正则里匹配任意数字的简写,在Swift字符串中需要转义为\\d,所以正则可以写成:

let regex = "\\d{4}/\\d{4}"
if let range = myString.range(of: regex, options: .regularExpression) {
    let matchedText = String(myString[range])
    print("匹配到的日期范围:\(matchedText)")
}

额外说明

如果你的日期范围前后可能有其他字符,并且想避免匹配到更长的数字串(比如12345/6789这种),可以考虑给正则加上单词边界匹配:

let regex = "\\b\\d{4}/\\d{4}\\b"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:27:20