用于URL匹配的正则表达式在iOS中不起作用
我找到了一个PHP正则表达式来检测Web URL:用于URL匹配的正则表达式在iOS中不起作用,ios,regex,xcode,Ios,Regex,Xcode,我找到了一个PHP正则表达式来检测Web URL: $url_pattern = '/((http|https)\:\/\/)?[a-zA-Z0-9\.\/\?\:@\-_=#]+\.([a-zA-Z0-9\.\/\?\:@\-_=#])*/'; 此正则表达式可以匹配如下URL: http://www.google.com www.google.com google.com 现在,我尝试在Objective-C中使用它作为: 它没有检测到任何类型的URL。我在进行了测试。检查此项: NSSt
$url_pattern = '/((http|https)\:\/\/)?[a-zA-Z0-9\.\/\?\:@\-_=#]+\.([a-zA-Z0-9\.\/\?\:@\-_=#])*/';
此正则表达式可以匹配如下URL:
http://www.google.com
www.google.com
google.com
现在,我尝试在Objective-C中使用它作为:
它没有检测到任何类型的URL。我在进行了测试。检查此项:
NSString urlRegEx=@http | https://\w |[0-9]|[-| |[u]+\.|/+
我在我的应用程序中使用了这个请尝试以下代码以验证URL
- (BOOL) validateUrl: (NSString *) stringURL {
NSString *urlRegEx =
@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:stringURL];
}
您应该记住,PHP正则表达式通常在分隔符中使用,当在Objective C中使用此类正则表达式模式时,应该删除这些分隔符。此外,我们不必仅以连字符转义字符类内的每个非单词字符,但在字符类外,必须双转义特殊字符 所以,使用
NSString *pattern = @"(?:(?:http|https)://)?[a-zA-Z0-9./?:@\\-_=#]+\\.([a-zA-Z0-9./?:@\\-_=#])*";
或者,你甚至可以签约
NSString *pattern = @"(?:(?:http|https)://)?[\\w./?:@=#-]+\\.([\\w./?:@=#-])*";
请参见字符类末尾的连字符不需要转义
请参见删除分隔符,必要时使用双斜杠。NSString*表达式=@?:?:http | https://?[a-zA-Z0-9./\\\?:@\\-\\\\\\\+\.[a-zA-Z0-9./\\\?:@\\-\\]*;。它甚至可以压缩为NSString*pattern=@?:?:http | https://?[\\w./\\?:@=-]+\.[\\w./\\?:@=-]*;。谢谢你的斯特里比雪夫,它现在正在工作!!!很好,我添加了一个带有工作演示链接的答案。请注意,regex101.com或regexr.com可以为您提供使用regex可以实现的要点,但是您仍然需要根据
NSString *pattern = @"(?:(?:http|https)://)?[\\w./?:@=#-]+\\.([\\w./?:@=#-])*";