Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
155 views
in Technique[技术] by (71.8m points)

ios - Swift regular expression format?

I'm familiar with doing pcre regexes, however they don't seem to work in swift.

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

to validate numbers like 1,000,000.00

However, putting this in my swift function, causes an error.

    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
    }
}

"Invalid escape sequence in litteral"

This is of course, because pcre uses the "" character, which swift interprets as an escape (I believe?)

So since I can't just use the regexes I'm used to. How do I translate them to be compatible with Swift code?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Within double quotes, a single backslash would be readed as an escape sequence. You need to escape all the backslashes one more time in-order to consider it as a regex backslash character.

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...