Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??
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


In reply to regex elegance contest - validate a pw by tos

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • 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.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others chilling in the Monastery: (2)
As of 2024-04-26 00:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found