2

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

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

5 回答 5

6

看看这个

NSString *urlRegEx =
@"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
于 2012-09-14T06:34:39.083 回答
1

使用下面的方法

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

希望这可以帮助你...

:)

于 2012-09-14T07:27:27.233 回答
1

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

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

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

对于在第一个点之后具有“-”的 URL,它会失败

于 2015-08-06T10:44:25.983 回答
1

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

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,}))";

匹配的示例:

不匹配的情况:

ETC...

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

于 2018-01-30T12:40:01.023 回答
1

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

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

于 2016-01-13T15:38:12.470 回答