我正在尝试编写一个函数,如果它是一个有效的比特币地址,它会返回 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/