如何匹配正则表达式到字符串结尾?

时间:2015-02-17 17:50:35

标签: regex string swift match

我正在尝试使用正则表达式在键入时检查用户输入。例如,如果我想检查字符串“Hello”,并且用户输入是“H”,“He”,...,“Hello”“Hello world”等,它将是有效的但是“Hi”,“ “等等不会。

我目前正在使用:

if let range = s.rangeOfString("^\\s*Hello", options: .RegularExpressionSearch){
    //Valid
}

但这不接受“H”,“他”等。有没有办法用正则表达式做到这一点?

1 个答案:

答案 0 :(得分:1)

您需要添加以下所有替代方案。

^\\s*H(?:ello|el?l?)?\\b

请注意?重复前一个令牌零或一次。不要考虑?(?<=..)或非捕获组(?=..)中的(?:..)内容。 |称为交替运算符。它将首先使用左侧的图案。如果此模式找到匹配,那么它将不会触及存在于其右侧的模式。因此,H(?:ello)\\b匹配HelloHe匹配He,因为我们将第二个模式中的l作为可选项。同样,它继续下去。非捕获组之后的?将使整个组成为可选组。现在我们得到一个类似^\\s*H\\b的模式,现在这匹配一个H