Ios Swift NSPredicate评估失败

Ios Swift NSPredicate评估失败,ios,objective-c,swift,nspredicate,Ios,Objective C,Swift,Nspredicate,我对使用Regex和NSPredicates不太熟悉。我正在尝试将以下目标代码转换为swift,但失败,出现以下错误: “NSInvalidArgumentException”,原因:“无法在上进行正则表达式匹配。” 对象自匹配“++([A-Za-z0-9-]+\)+[A-Za-z]{2}[A-Za-z]*” 目标C代码: - (BOOL)validateEmailWithString:(NSString*)userEmail { BOOL stricterFilter = NO;

我对使用Regex和NSPredicates不太熟悉。我正在尝试将以下目标代码转换为swift,但失败,出现以下错误:

“NSInvalidArgumentException”,原因:“无法在上进行正则表达式匹配。” 对象自匹配“++([A-Za-z0-9-]+\)+[A-Za-z]{2}[A-Za-z]*”

目标C代码:

- (BOOL)validateEmailWithString:(NSString*)userEmail
{
    BOOL stricterFilter = NO;
    NSString *stricterFilterString = @"[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}";
    NSString *laxString = @".+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*";
    NSString *emailRegex = stricterFilter ? stricterFilterString : laxString;
    NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
    return [emailTest evaluateWithObject:userEmail];
}
等效Swift代码

func validateEmail(withString userEmail: String) -> Bool {
        let stricterFilter: Bool = false
        let stricterFilterString: String = "[A-Z0-9a-z\\._%+-]+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2,4}"
        let laxString: String = ".+@([A-Za-z0-9-]+\\.)+[A-Za-z]{2}[A-Za-z]*"
        let emailRegex: String = stricterFilter ? stricterFilterString : laxString
        let emailTest = NSPredicate(format: "SELF MATCHES %@", emailRegex)
        return emailTest.evaluate(with: emailTest)
    }
此行出现异常:

return emailTest.evaluate(with: emailTest)

目标C代码工作正常,但在swift中应用程序崩溃。有人能帮我吗?

请用这条线测试一下

let emailRegEx = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"

let emailTest = NSPredicate(format:"SELF MATCHES %@", emailRegEx)
return emailTest.evaluateWithObject(userEmail)
试试这个

func validateEmailWithString(checkString : String) -> Bool {

    let emailFormat = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
    let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailFormat)
    return emailPredicate.evaluate(with: checkString)
}

评估。。。用户电子邮件与评估。。。emailTest
您可以在此处找到答案Cheers@vadian谢谢你指出这个问题。我的错!