如何查看特定字符串是否与正则表达式模式匹配?

时间:2016-02-25 01:41:33

标签: regex swift nsregularexpression

我试图查看特定字符串是否与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

代码如何运作:

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

1 个答案:

答案 0 :(得分:8)

不是测试范围是否为零,而是查看范围是否是整个目标字符串。

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

编辑有人要求翻译成Swift 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") }