Hi Terry,
>
> ^(?i)(?!.*(abcdefghijklmn|abcdefghijklm|abcdefghijkl|abcdefghijk|abcdefghij|abcdefghi|abcdefgh|abcdefg|abcdef|abcde|abcd|bcdefghijklmno|cdefghijklmnop|defghijklmnopq|efghijklmnopqu|fghijklmnopqur|ghijklmnopqurs|hijklmnopqurst|ijklmnopqurstv|klmnopqurstvw|lmnopqurstvwx|mnopqurstvwxy|nopqurstvwxyz|1234|2345|3456|4567|5678|6789|aaaa|bbbb|cccc|dddd|eeee|ffff|gggg|hhhh|iiii|jjjj|kkkk|llll|mmmmm|nnnnn|oooo|pppp|qqqq|uuuu|rrrr|ssss|tttt|uuuu|vvvv|wwww|xxxx|yyyy|zzzz|!!!!|""""|££££|\$\$\$\$|%%%%|\^\^\^\^|&&&&|\*\*\*\*|::::|;;;;|''''|@@@@|####|~~~~|,,,,<<<<|\.\.\.\.|>>>>|\/\/\/\/|\?\?\?\?|\\\\|1111|2222|3333|4444|5555|6666|7777|8888|9999|0000|Dorset|spring|summer|autumn|winter|monday|tuesday|wednesday|thursday|friday|saturday|sunday|january|february|march|april|may|june|july|august|september|october|november|december)|([a-z])\1{2}).*$
...
> My password consists of three words followed by a year and an
> exclamation mark (no spaces) and I reckon that complies with the
> above. Does anyone disagree?
It depends on the words.
I've laid out the regexp in ‘verbose’ style to make it easier to see its
structure. I've added line numbers for reference.
1 ^
2 (?i)
3 (?!
4 .* (
5 abcdefghijklmn | abcdefghijklm | abcdefghijkl | abcdefghijk |
6 abcdefghij | abcdefghi | abcdefgh | abcdefg | abcdef |
7 abcde | abcd |
8 bcdefghijklmno |
9 cdefghijklmnop |
10 defghijklmnopq |
11 efghijklmnopqu |
12 fghijklmnopqur |
13 ghijklmnopqurs |
14 hijklmnopqurst |
15 ijklmnopqurstv |
16 klmnopqurstvw |
17 lmnopqurstvwx |
18 mnopqurstvwxy |
19 nopqurstvwxyz |
20 1234 | 2345 | 3456 | 4567 | 5678 | 6789 |
21 aaaa | bbbb | cccc | dddd | eeee | ffff | gggg | hhhh |
22 iiii | jjjj | kkkk | llll | mmmmm | nnnnn | oooo |
23 pppp | qqqq | uuuu | rrrr | ssss | tttt | uuuu | vvvv |
24 wwww | xxxx | yyyy | zzzz |
25 !!!! | """" | ££££ | \$\$\$\$ | %%%% | \^\^\^\^ | &&&& |
26 \*\*\*\* | :::: | ;;;; | '''' | @@@@ | #### | ~~~~ |
27 ,,,,<<<< | \.\.\.\. | >>>> | \/\/\/\/ | \?\?\?\? | \\\\ |
28 1111 | 2222 | 3333 | 4444 | 5555 |
29 6666 | 7777 | 8888 | 9999 | 0000 |
30 Dorset |
31 spring | summer | autumn | winter |
32 monday | tuesday | wednesday | thursday |
33 friday | saturday | sunday |
34 january | february | march | april | may | june |
35 july | august | september | october | november | december
36 ) |
37 ([a-z])\1{2}
38 )
39 .*
40 $
It's poorly written.
Lines of interest:
1. Match start of the password.
2. Case insensitive from here on.
3. Do not match...
4. Zero or more characters, i.e. anything, followed by...
5-7. Four to fourteen characters from the start of the alphabet.
8-10. Fourteen characters sliding through the alphabet starting at
‘b’, ‘c’, and ‘d’ given line 5 has already covered starting
with ‘a’.
11. Bug: ends with ‘u’ rather than ‘r’; someone with poor English
who learnt that ‘q’ is always followed by ‘u’?
12-15. The ‘qu’ persists, with ‘tv’ appearing; ‘u’ has already handled.
16. Bug: starting with ‘j’ has been missed, shortening the match to
thirteen characters.
17-19. The two bugs continue, ‘qu’ and thirteen long.
20. A run of four digits within 1-9; 0 is not tested, i.e. ‘0123’
and ‘7890’.
21-24. The same letter repeated four times. Bug: ‘u’ appears twice,
after ‘q’ and ‘t’.
25-27. The same punctuation repeated four times. Bug: line 27 lacks
a ‘|’, meaning ‘alternately’, in ‘,,,,<<<<’ so it matches those
eight characters. Bug: various punctuation missed, e.g. ‘[’.
28-29. The same digit repeated four times. Bug: lines 21-29 could be
written as ‘[[:print:]]{4}’ to cover all printing characters,
including space. This still allows non-printing characters if
they can be entered.
36. Alternately to lines 4-37...
37. Various letters followed twice by what matched the group
starting on line 4. Bug: that could couldn't have matched else this
alternative wouldn't be matching; the group could be started
with ‘(?:’ so it isn't a capturing group. Which letters and
whether accented versions are included depends on how Java will
handle the locale; I don't know Java. Bug: the overall intent
is unclear; perhaps two adjacent pairs, e.g. ‘4422’.
39. Anything. Bug: not needed given...
40. Match end of the password. Bug: can also be dropped along with
line 39.
--
Cheers, Ralph.
--
Next meeting: Online, Jitsi, Tuesday, 2024-11-12 20:00
Check to whom you are replying
Meetings, mailing list, IRC, ... https://dorset.lug.org.uk
New thread, don't hijack: mailto:[email protected]