Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何添加“&引用;在正则表达式中发送目标c中的多封邮件_Ios_Objective C_Regex_Xcode - Fatal编程技术网

Ios 如何添加“&引用;在正则表达式中发送目标c中的多封邮件

Ios 如何添加“&引用;在正则表达式中发送目标c中的多封邮件,ios,objective-c,regex,xcode,Ios,Objective C,Regex,Xcode,我是iOS新手,在正则表达式中添加,时遇到了问题 我的代码是这样的 NSString *emailRegEx = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,100}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx]; 如果我在正则表达式应用程序中添加,,则会导致崩溃 NSString *e

我是iOS新手,在正则表达式中添加
时遇到了问题

我的代码是这样的

 NSString *emailRegEx = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,100}";        
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
如果我在正则表达式应用程序中添加
,则会导致崩溃

 NSString *emailRegEx = @"[A-Z0-9a-z._%+-,]+@[A-Za-z0-9.-,]+\\.[A-Za-z,]{2,100}";
 NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
错误是这样的

 NSString *emailRegEx = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,100}";        
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
NSInternalInconsistencyException',原因:'无法进行正则表达式匹配, 原因:无法打开模式U\U REGEX\U无效的\U范围(字符串 abc@gmail.com,xyz@gmail.com图案 [A-Z0-9a-z.uz%+-,]+@[A-Za-Z0-9.-,]+.[A-Za-z,]{2100},案例0,佳能 0)'

有人遇到过这样的问题吗?我需要发送多封电子邮件。
提前谢谢

在字符类中添加逗号
时,请确保将连字符
-
移到末尾,或将其转义为
\-
。以下是修复错误的3种方法:

  • [A-Za-z0-9.,-]
    -
    移动到末尾
  • [A-Za-z0-9.\-,]
    对连字符进行了转义
    \-
  • [A-Za-z0-9,-.]
    确定订单。这包括一个范围(ASCII 44到46),其中将包括另一个字符,该字符实际上由连字符本身算不上什么
    -
    ,因此它与上述两个正则表达式相同
为什么需要这样做?

如果在字符类中的两个字符之间留有连字符,引擎将尝试匹配范围
-,
,该范围是无效的ASCII范围(46到44)。但是,如果您编写了
,-。
,它将工作正常,不会给出任何错误,因为它是ASCII 44到46,但是它将包含另一个ASCII字符,即第45位(
-
本身)


希望这有帮助

为什么不简单地使用
分隔字符串,
并比较每个字符串是否有效

NSString *emailRegEx = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
NSArray *emails = [emailField.text componentsSeparatedByString:@","];
NSMutableArray *valiedEmails = [[NSMutableArray alloc] init];
for (NSString *email in emails) {
    if ([emailTest evaluateWithObject:email]) {
        [valiedEmails addObject: email];            
    }
}
if (valiedEmails.count > 0) {
    txtviewemailaddress.text = [valiedEmails componentsJoinedByString:@", "];
    [self serverconnectionPost];
} 
else {
    //show alert that email is not valid 
}

它只在一个文本文件中。它不接受这种类型的验证[A-Z0-9a-z.[UZ%+-,]+@[A-Za-Z0-9.-,]+\.[A-Za-z,]{2100}“@Muju检查编辑后的答案,并将regx更改为一次只比较一封电子邮件,
将单独的电子邮件与字段进行比较,然后循环查看结果并比较每封邮件是否有效。”not@Muju检查编辑的答案,并一次比较一封电子邮件,所以让regx只比较一封邮件,而不是多封邮件。但是我需要一次比较多封邮件。@Muju你不能在for循环中实现吗?不行。我添加了[a-Z0-9a-z.\uz%+,-]+@[a-Za-Z0-9.-]+\[a-Za-z.-]+\[a-Za-z.-]{2100}但不是work@WiktorStribixew这并不是因为我要求多封邮件,而您的链接用于单封邮件验证。