swift - 验证比特币地址的正则表达式

标签 swift nsregularexpression

我正在尝试编写一个函数,如果它是一个有效的比特币地址,它会返回 true 或 false。

我目前有一个 QR 码扫描器,它返回如下字符串:

比特币:18YCdhPsd5gdf6WD4ioMZZJKTNdajUJyTM

这是我的功能:

func isValidBitcoinAddress() -> Bool {
    var fullAddress = self.components(separatedBy: ":")
    let r = fullAddress[1].startIndex..<fullAddress[1].endIndex
    let pattern = "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$"
    let r2 = self.range(of: pattern, options: .regularExpression)
    if r2 == r {
        return true
    } else {
        return false
    }
}

不幸的是,这每次都返回 false。

我从这个站点得到了 RegEx 模式:http://mokagio.github.io/tech-journal/2014/11/21/regex-bitcoin.html

Swift 中的格式可能不同吗?

谢谢!

最佳答案

您正在将 self 与模式而不是 fullAddress[1] 进行比较。

使用以下内容:

func isValidBitcoinAddress() -> Bool {
    let fullAddress = self.components(separatedBy: ":")
    if fullAddress.count == 2 && fullAddress[0] == "bitcoin" {
        let pattern = "^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$"
        let r = fullAddress[1].startIndex..<fullAddress[1].endIndex
        let r2 = fullAddress[1].range(of: pattern, options: .regularExpression)
        return r == r2
    } else {
        return false
    }
}

关于swift - 验证比特币地址的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47300114/

相关文章:

命名组匹配的正则表达式数组

swift - 如何使用 Swift NSRegularExpression 获取大写字母?

iphone - 用于在推文中查找主题标签的正则表达式无法正常工作

regex - 如何获取仅用于一个域的验证电子邮件地址的正则表达式?

ios - 在子查询内排序

swift - 在 UIViewController 中使用 tableView 的标签来更新标签

ios - Mapbox 中的 MKUserTrackingBarButtonItem

ios - 在 RegEx 标识的 NSString 中的某个点添加一个字符,是否有比所有反向引用更有效的方法?

ios - 使用引用条码字符串生成 UPC-A 条码图像

swift - 将静态方法的引用传递给函数