2013-04-07 80 views
6

我不知道是否有产生来自像一个正则表达式随机字符串的方式:基于正则表达式生成随机字符串?

/[a-z0-9]{5}/.to_s 
#=> "dsar3" 

我发现randexphttps://github.com/benburkert/randexp),但它似乎不是像上面反正一个基本的例子工作,我觉得它是我遗弃。

有人吗?

+0

@iAmRubuuu这不是真正随机的,是由一个模式,而不是确定的。 – squiguy 2013-04-07 07:20:50

+0

这需要一些基本的约束,对吧?我的意思是,没有办法生成匹配'/.*/'的随机正则表达式,因为涉及的字符数可以是0和无限长之间的任何长度。如果字符的数字*也是随机的,或者我们应该试图从无限集合中随机选择一个值?或者你是否提出了一个限制,其中正则表达式不允许像*或+这样的东西(就像你的例子那样)? – 2013-04-14 23:58:43

+0

另外,如果你在正则表达式中有'.to_s'提供了一个随机匹配的字符串,对于下一个看到该代码的开发者来说,这将是一个非常严重的wtf。 – 2013-04-15 00:00:53

回答

1

没有,但怎么样:

(0..255).map(&:chr).select{|x| x =~ /[a-z0-9]/}.sample(5).join 
#=> "qif0l" 
+0

'x =〜/ [a-z0-9] /'在逻辑上做什么? – 2013-04-07 07:42:29

+0

它只选择匹配正则表达式的字符 – pguardiario 2013-04-07 07:44:00

+0

'sample'不允许重复,所以“qqf01”不会发生。 – steenslag 2013-04-07 10:42:06

相关问题