/^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$/
这是一个正则表达式,用于验证网址的主机名,取自Domain name validation with RegEx。
我们如何迭代或创建和循环每个可能的组合? 在每次正确匹配迭代之后,将对结果进行测试。
答案 0 :(得分:1)
这将找到10个 116 的可能性。考虑到这个星球只存在于10 17 秒前(几乎是昨天!),这应该会让你停留一段时间。
use strict;
use warnings;
use feature qw( say );
use Algorithm::Loops qw( NestedLoops );
my @char_set1 = ('a'..'z', 'A'..'Z', '0'..'9' );
my @char_set2 = ('a'..'z', 'A'..'Z', '0'..'9', '-');
my @char_set3 = (undef, 'a'..'z', 'A'..'Z', '0'..'9', '-');
my @char_set4 = ('a'..'z', 'A'..'Z');
my @char_set5 = (undef, 'a'..'z', 'A'..'Z');
my $iter = NestedLoops([
(\@char_set4) x 2,
['.'],
(\@char_set3) x 60,
\@char_set2,
\@char_set1,
]);
while (my @chars = $iter->()) {
say join '', reverse grep defined, @chars;
}
这不是一般方法,只是在这种情况下运作良好的方法。