2016-06-21 17 views
1

Ich bin mit zwei regulären Ausdrücken:Swift: Kombinieren Sie zwei oder mehr reguläre Ausdrücke

var myNumbers = numbers.text?.stringByReplacingOccurrencesOfString("[^0-9]", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range:nil) 


myNumbers = myNumbers?.stringByReplacingOccurrencesOfString("^\\s*$", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range:nil) 

Ich Entfernen von nicht Anzahl Zeichen und Leerzeichen, aber es eine Möglichkeit, die reguläre Ausdrücke zu kombinieren?

+0

Die zweite Regex wird nie mit irgendetwas übereinstimmen, es sei denn, die Zeichenfolge enthält ausschließlich Leerzeichen. – vadian

Antwort

4
var myNumbers = numbers.text?.stringByReplacingOccurrencesOfString("[\\s\\D]", withString: "", options: NSStringCompareOptions.RegularExpressionSearch, range:nil) 
0

Aufbauend auf Code's answer, die \s Token erfasst alle Leerzeichen (Tabulatoren, Leerzeichen, neue Linien, etc.), und \D erfasst alle Ziffern.

let regex = "[\\s\\D]" 

var myNumbers = numbers.text?.stringByReplacingOccurrencesOfString(regex, 
                 withString: "", 
                  options: .RegularExpressionSearch, 
                   range: nil) 

Swift verfügt über eine automatische Enum Folgerung, so brauchen Sie nicht NSStringCompareOptions.RegularExpressionSearch zu schreiben. Sie können einfach .RegularExpressionSearch schreiben, und der NSStringCompareOptions wird vom Compiler aus der Signatur der Funktion kommentiert.