首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Swift正则表达式格式?

Swift正则表达式格式?
EN

Stack Overflow用户
提问于 2015-03-08 01:37:08
回答 2查看 10.3K关注 1票数 18

我熟悉使用pcre正则表达式,但是它们似乎不能在swift中工作。

代码语言:javascript
运行
复制
^([1-9]\d{0,2}(\,\d{3})*|([1-9]\d*))(\.\d{2})?$

验证像1,000,000.00这样的数字

但是,将其放入我的swift函数中会导致错误。

代码语言:javascript
运行
复制
    extension String {
    func isValidNumber() -> Bool {
        let regex = NSRegularExpression(pattern: "^([1-9]\d{0,2}(\,\d{3})*|([1-9]\d*))(\.\d{2})?$", options: .CaseInsensitive, error: nil)
        return regex?.firstMatchInString(self, options: nil, range: NSMakeRange(0, countElements(self))) != nil
    }
}

“litteral中的无效转义序列”

当然,这是因为pcre使用了"\“字符,swift将其解释为转义(我相信?)

所以,既然我不能只使用我习惯的正则表达式。如何将它们转换为与Swift代码兼容?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-08 01:40:12

在双引号内,单个反斜杠将作为转义序列读取。您需要再次对所有反斜杠进行转义,以便将其视为正则反斜杠字符。

代码语言:javascript
运行
复制
"^([1-9]\\d{0,2}(,\\d{3})*|([1-9]\\d*))(\\.\\d{2})?$" 
票数 39
EN

Stack Overflow用户

发布于 2021-11-13 06:56:29

从Swift 5开始,你可以像这样使用#"..."#,这样你就不需要为Swift添加额外的转义序列:

代码语言:javascript
运行
复制
#"^([1-9]\d{0,2}(\,\d{3})*|([1-9]\d*))(\.\d{2})?$"#
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28917893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档