使用GENEREX random方法生成指定长度正则匹配字符串时参数不生效
解决Generex random(min,max)生成字符长度不符合参数要求的问题
你的问题出在正则表达式的定义上:[a-zA-Z]本身只能匹配单个大小写字母,Generex的random(min, max)方法是基于你提供的正则规则生成字符串,它不会自动重复正则表达式来满足你指定的长度范围——正则本身只能生成1个字符,所以哪怕你传了4-15的参数,也没法生成更长的结果。
两种解决办法:
直接在正则里限定长度范围(推荐这种方式,逻辑更清晰)
修改正则为[a-zA-Z]{4,15},这样正则本身就要求生成4到15个大小写字母,调用random()时无需再传参数:Generex generex = new Generex("[a-zA-Z]{4,15}"); String output = generex.random();保留正则的重复可能性,用方法参数约束长度
把正则改成允许任意数量的大小写字母([a-zA-Z]+),这样random(4,15)就能在正则允许的范围内,生成4到15个字符的字符串:Generex generex = new Generex("[a-zA-Z]+"); String output = generex.random(4,15);
简单来说:random(min, max)的作用是缩小正则允许的长度范围,而不是突破正则本身的规则去生成更长的字符串。只有正则本身支持生成对应长度的字符串时,这个参数才会生效。
内容的提问来源于stack exchange,提问作者flepponier
相关产品推荐
相关产品推荐

