如何判断特定字符串是否符合正则表达式模式?

4

我正在尝试在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

7
变量pattern的值是正则表达式字符串,表示匹配0到9之间任意一个数字的模式。 - Pranav C Balan
1个回答

10

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

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") }

如何在Swift 4中实现相同的功能?具体比较正则表达式匹配范围是否为完整字符串。 - Kanchu
1
@Kanchu 将第二行更改为 let r = string.startIndex..<string.endIndex - matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接