我正在尝试检查字符串是否以遵循正则表达式模式的文本开头。是否可以使用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
}
答案 0 :(得分:4)
您应该使用通过range(of:options:range:locale:)
和.anchored
选项传递.regularExpression
选项的正则表达式:
if firstRowText.range(of: "[Ff][Yy][Ii]", options: [.regularExpression, .anchored]) != nil {...}
.anchored
选项使正则表达式引擎仅在字符串的开头搜索匹配项。
要使您的正则表达式以不区分大小写的方式匹配,您可以在当前选项.caseInsensitive
旁边传递另一个选项,并使用较短的正则表达式,例如"FYI"
:
if firstRowText.range(of: "FYI", options: [.regularExpression, .anchored, .caseInsensitive]) != nil {
请注意,您还可以使用内联修饰符选项(?i)
设置不区分大小写的内容:
"(?i)FYI"