【问题标题】:Create URL based on entered data in iOS根据 iOS 中输入的数据创建 URL
【发布时间】:2013-07-23 13:02:29
【问题描述】:

如果用户输入说google 那么

我需要添加http://www.google.com 即缺少的部分。

用户可以输入任何内容,例如 google.inwww.googleanything

现在 goalcomplete left over url 我们使用正则表达式检查 url,如下所示:

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

给定的网址是否有效

【问题讨论】:

    标签: iphone ios objective-c nsurl


    【解决方案1】:

    不要忘记带有.co.uk.co.us.com.co等后缀的三级域名。

    完全限定的域名必须至少有一个点。如果它没有至少一个点,那么您可以在末尾添加.com

    如果它确实有至少一个点,那么它会变得更加复杂。 .google 将来可能是顶级域,但现在不是。也许您想保留所有“有效”一级和二级域名的白名单。您从右侧评估输入的域名,直到它停止匹配您列表中的域。其余的是“注册”域名和任何子域。如果找不到任何匹配项,请添加.com

    或者,您可以尝试解析域名,而不是解析域名,如果无法解析,则添加 .com 并重试。

    【讨论】:

      【解决方案2】:

      我想我知道您在问什么,但是除了正则表达式之外,您实际上如何验证 URL 是否有效?似乎您错误地假设所有 URL 都遵循通用语法。例如,http://www.www.extra-www.org/ 是一个有效的 URL,因此如果您应用您的正则表达式(据我了解您的意图),用户将到达 http://www.extra-www.org,这可能与用户想要的站点不同(即使在此情况是因为它转发)。另一个例子是http://www.www.com... 如果用户输入“www”,你的正则表达式会杀死它。最后一个例子是,如果一个站点没有使用“www”注册其 DNS - 您的正则表达式将错误地添加“www”。

      编辑:如果用户需要 https 而不是 http 并且只输入“google”会发生什么?

      【讨论】:

        【解决方案3】:

        我自己还没有尝试过这个,但是NSTextCheckingTypeLink 类型的NSDataDetector 应该可以让你做得不错。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多