iPhone中url的正则表达式

Posted

技术标签:

【中文标题】iPhone中url的正则表达式【英文标题】:Regular expression for url in iPhone 【发布时间】:2012-09-14 06:27:34 【问题描述】:

我正在使用正则表达式来验证网站地址。但它不起作用,因为它的格式在 iPhone 中不正确。它的逻辑几乎是正确的。谁能在 iPhone 中为我重建这个正则表达式?

(?<http>(http:[/][/]|www.)([a-z]|[A-Z]|[0-9]|[/.]|[~])*)

【问题讨论】:

【参考方案1】:

看看这个

NSString *urlRegEx =
@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";

【讨论】:

小心这个 - 它没有正确检测链接:尝试验证例如cats.org/cat-super.jpg。它在第一个点后以“-”中断 我添加了一个改进版本的答案 - 如果您可以确认我检测到的问题并编辑您的答案,这可以帮助很多人【参考方案2】:

使用下面的方法

- (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];

希望对您有所帮助...

:)

【讨论】:

【参考方案3】:

对于任何对接受的答案正则表达式有问题的人,这里是我正在使用的版本:

(https?)://(([\\w\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\(\\)\\[\\]\\\\\\?\\<\\>])*)+([\\.|/](([\\w\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\(\\)\\[\\]\\\\\\?\\<\\>])*))+

接受的答案正则表达式的问题是: \w - 已经包含“_”和数字

第一个点后带有“-”的 URL 失败

【讨论】:

【参考方案4】:

这将捕获 http / https / 普通 subdomain.domain.suffix 链接: (基于 Grzegorz Krukowski 的好回答)

@"((https?)://)?(([\\w\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)\\-\\+\\=\\(\\)\\[\\]\\\\\\?\\&lt;\\&gt;])*)+([\\.|/](([\\w\\!\\@\\#\\$\\%\\^\\&amp;\\*\\(\\)\\-\\+\\=\\(\\)\\[\\]\\\\\\?\\&lt;\\&gt;])+))+"

【讨论】:

但这会检测到km/hm/sec 或类似的URL,这是错误的。【参考方案5】:

就我而言,这是明确的表达方式:

NSString *URLRegEx = 
@"((https?://www[.][a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9].2,[.][a-zA-Z0-9]2,)|(www[.][a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9].2,[.][a-zA-Z0-9]2,)|([a-zA-Z0-9\-]2,[.][a-zA-Z0-9]2,))";

匹配的例子:

http://www.example.com http://www.example.es https://www.example.com www.example.com example.com

不匹配的情况:

示例 http://example http://example.com www.example

等等……

如果您不想允许所有这些情况,只需将它们从表达式中删除即可。

【讨论】:

以上是关于iPhone中url的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Java中匹配URL的正则表达式

Java中完美的URL验证正则表达式

php 正则表达式 url匹配

求一个正则表达式:校验url和磁盘路径。

正则表达式解析url参数

php如何使用正则表达式匹配url图片啊