Swift:使用正则表达式检查前缀

Koh*_*Koh 2 regex swift

我正在尝试检查字符串是否以遵循正则表达式模式的文本开头。有没有办法使用 来做到这一点string.hasPrefix()?

到目前为止我的实现:

let pattern = "[Ff][Yy][Ii](.)?"
let regex = try? NSRegularExpression(pattern: pattern, options: [])

if firstRowText.hasPrefix(regex) { //Cannot convert value of type NSRegularExpression to String

}
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

您应该使用正则表达式通过选项range(of:options:range:locale:)传递选项:.regularExpression.anchored

if firstRowText.range(of: "[Ff][Yy][Ii]", options: [.regularExpression, .anchored]) != nil {...}
Run Code Online (Sandbox Code Playgroud)

该.anchored选项使正则表达式引擎仅在字符串开头搜索匹配项。

要使正则表达式以不区分大小写的方式匹配,您可以在当前选项旁边传递另一个选项 ,.caseInsensitive并使用更短的正则表达式,例如"FYI":

if firstRowText.range(of: "FYI", options: [.regularExpression, .anchored, .caseInsensitive]) != nil {
Run Code Online (Sandbox Code Playgroud)

请参阅Swift 在线演示。

请注意,您还可以使用内联修饰符选项(?i)来设置不区分大小写:

"(?i)FYI"
Run Code Online (Sandbox Code Playgroud)