2016-06-21 5 views
1

Я использую два регулярных выражения:Swift: Объединить два или более регулярные выражения

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


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

Я удаляю символы и пробелы не являющихся цифрами, но есть способ объединить регулярные выражения?

+0

Второе регулярное выражение никогда не будет соответствовать чему-либо, если строка не содержит исключительно пробельные символы. – vadian

ответ

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

Опираясь на Code's answer, то \s маркер захватывает все пробелы (вкладки, пробелы, новые строки и т.д.), и \D захватывает все цифры.

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

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

Swift имеет автоматический вывод перечислимую, так что вам не нужно писать NSStringCompareOptions.RegularExpressionSearch. Вы можете просто написать .RegularExpressionSearch, а NSStringCompareOptions будет выведен компилятором из сигнатуры функции.