2016-02-25 47 views
2

我想看看特定的字符串是否與swift中的正則表達式模式匹配。我到目前爲止的代碼似乎檢查給定字符串中的任何子字符串是否與 正則表達式匹配。如何查看特定字符串是否與正則表達式匹配?

let string = " (5" 
let pattern = "[0-9]" 
if string.rangeOfString(pattern, options: .RegularExpressionSearch) != nil { 
     print("matched") 
} 

上面的代碼返回一個匹配,即使字符串作爲一個整體不匹配模式。

如何我想代碼操作:

" (5" -> no match 
"(5" -> no match 
"5" -> match 

代碼currenty如何操作:範圍

" (5" -> match 
"(5" -> match 
"5" -> match 
+7

'讓模式= 「^ [0-9] $」' –

回答

7

而是測試是否是零,放眼看到的範圍是否是整個目標字符串。

let string = "5" 
let r = string.characters.indices 
let pattern = "[0-9]" 
let r2 = string.rangeOfString(pattern, options: .RegularExpressionSearch) 
if r2 == r { print("match") } 

編輯有人問翻譯成斯威夫特4:

let string = "5" 
let r = string.startIndex..<string.endIndex 
let pattern = "[0-9]" 
let r2 = string.range(of: pattern, options: .regularExpression) 
if r2 == r { print("match") } 
+0

如何做相同的斯威夫特4?特別比較一下正則表達式匹配的範圍是完整的字符串。 – Kanchu

+1

@Kanchu將第二行更改爲'let r = string.startIndex .. matt

相關問題