Hi Monks,
a colleague of mine came to me with a question on a special regex which has to decide whether a given pw is valid or not. The pw has to suffice the following restrictions:
- it's length has to be within 5-8 chars
- at least one lower-char, one upper-char and one number has to occur
I agreed to him that this requirement isn't trivial. But on the other side I told him that i could imagine a really short solution. Perhaps i leaned out of the window a bit too wide, because after a little fiddling i got this:
#!/usr/bin/perl -w
# vim: set tabstop=3
use strict;
while (<DATA>)
{
chomp;
print "\n$_\n";
length() < 5 && do { print "too short\n"; next };
length() > 8 && do { print "too long\n"; next };
m#
^
\w*[a-z]\w*[A-Z]\w*[0-9]\w*|
\w*[a-z]\w*[0-9]\w*[A-Z]\w*|
\w*[A-Z]\w*[a-z]\w*[0-9]\w*|
\w*[A-Z]\w*[0-9]\w*[a-z]\w*|
\w*[0-9]\w*[A-Z]\w*[a-z]\w*|
\w*[0-9]\w*[a-z]\w*[A-Z]\w*
$
#x
? print "valid\n"
: print "invalid (Input must have at least one lowercase-, " .
"one uppercase-Char and one Number! (f.i.: \'12Three
+\')\n";
}
__DATA__
1245Za78
1245Za7b8
45a7b8
a78Z
12Three
kMdlOz
6KYX
diImMU1Y
ZNw4uWSht
jDqvSN
qVRR
le2WTQv
us1j3SerC
OZv0LtSJ
9qyscg
LbX7o74
80TeRHq
7YIiXnEV8
e1Yctl9
8iGoc
R87MeDCFz
ziTnlk
cziP
This solution is quite good but appears a little bulky to me. Especially a more compact regex would be nice. Perhaps the length-validation could be made within the regex too.
I wonder who has THE solution which combines shortness and elegance in a tremendous way ;)
regards, tos
janitored by ybiC: Balanced <readmore> tags, minor format cleanup for legibility
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|