2016-02-25 42 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

相关问题