Swift正则表达式格式?

时间:2015-03-07 17:37:08

标签: ios regex swift pcre

我熟悉pcre正则表达式,但它们似乎并不快速。

^([1-9]\d{0,2}(\,\d{3})*|([1-9]\d*))(\.\d{2})?$

验证数字,例如1,000,000.00

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

    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代码兼容?

1 个答案:

答案 0 :(得分:36)

在双引号内,单个反斜杠将被重新作为转义序列。您需要再次转义所有反斜杠,以将其视为正则表达式反斜杠字符。

"^([1-9]\\d{0,2}(,\\d{3})*|([1-9]\\d*))(\\.\\d{2})?$"