【问题标题】:Swift Regular Expression create For Url "www" not for "http" for valid URLSwift 正则表达式为 URL “www”而不是“http”创建有效 URL
【发布时间】:2016-04-23 16:19:00
【问题描述】:

在 Swift 中,我使用正则表达式来检查 "WWW""HTTP" 两者,但在我的代码中,当我输入 时,它只检查 http “www.google.com” 那么它的显示无效请给我解决方案。这是我的代码。当我们不放 http 时如何检查 url。

 func validateUrl (stringURL : NSString) -> Bool {

        let urlRegEx = "(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*)+)+(/)?(\\?.*)?"
        let predicate = NSPredicate(format:"SELF MATCHES %@", argumentArray:[urlRegEx])
        let urlTest = NSPredicate.predicateWithSubstitutionVariables(predicate)
        print(urlTest);
        return predicate.evaluateWithObject(stringURL)
    }

【问题讨论】:

标签: ios swift validation url


【解决方案1】:

你可以试试类似这样的正则表达式:

(http:\/\/)?w{3}\.[^\s]*\.[a-zA-Z]{2,3}
  • (http:\/\/)?:http 可以出现 0 次或 1 次。
  • w{3}:www
  • \.[^\s]*:点字符后跟除空格外的任意数量的其他字符
  • \.[a-zA-Z]{2,3}:点字符后跟 2 或 3 个字母

我不确定它是否涵盖所有情况,但它会给你一个很好的起点来进行一些测试和重构。它也不包括非法 URL 字符。

【讨论】:

  • 它在 swift 2.0 中返回错误“文字中的无效转义序列”
  • @user3899589 是的,这是正则表达式的原始形式。要在您的代码中使用它,您需要像在原始表达式中一样对其进行转义(使用 \\. 而不是 \. 等等)
猜你喜欢
  • 2014-05-07
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多