我正在尝试检查字符串是否以遵循正则表达式模式的文本开头。有没有办法使用 来做到这一点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)
您应该使用正则表达式通过选项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)