Swift:使用Regex检查前缀

时间:2019-03-13 07:09:17

标签: swift regex

我正在尝试检查字符串是否以遵循正则表达式模式的文本开头。是否可以使用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

}

1 个答案:

答案 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 {

请参见Swift online demo

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

"(?i)FYI"