是否有任何go包接收regex作为输入并返回与该正则表达式匹配的随机字符串,或者您可以指导我如何实现这样的解决方案?
我的第一个想法是在/ dev / rand的循环中生成随机字节,然后返回一个与正则表达式匹配的字节,但我认为这种暴力消耗是非常耗时的,直到找到一个与正则表达式匹配的字符串。
使用案例
我打算将它用于Web服务测试库。
注册用户帐户等一些API调用需要使用唯一的字段,如电子邮件地址,电话号码等,因此需要基于模式/正则表达式的随机输入生成器。
随机属性还有助于防止陈旧数据/误报(即在当前测试套件之前存储的数据)。我想生成器不需要提供加密级别的随机性,而是像GUID那样。
答案 0 :(得分:3)
Reggen是我编写的一个可以从正则表达式生成字符串的库。它可用于生成您需要的电子邮件地址/电话号码,以及使用正则表达式指定的任何其他内容。
通常,提供的正则表达式越具体,它给出的结果就越好。例如,正则表达式.*@.*\..*
可能会生成类似F$-^@A"%mk.^uv
的内容,但[a-z]+@[a-z]+\.(com|net|org)
应该会产生更具可读性的内容,例如bfeujqp@qtpqby.com
使用库生成电子邮件地址:
import "github.com/lucasjones/reggen"
func main() {
str, err := reggen.Generate("^[a-z]{5,10}@[a-z]{5,10}\\.(com|net|org)$", 10)
if err != nil {
panic(err)
}
fmt.Println(str)
}
典型输出:
tpbry@sfmxet.net