^([rat])(?!\g1)([rat])(?!(\g2|\g1))[rat]$
If possible, I want to get rid of the repetition of [rat]
in my regex. May be substitute it for something like \c
or so.
^([rat])(?!\g1)([rat])(?!(\g2|\g1))[rat]$
If possible, I want to get rid of the repetition of [rat]
in my regex. May be substitute it for something like \c
or so.
You are matching unique characters from character class. Simply saying input string should not contain a second occurrence of defined characters. Just check if the opposite happens:
([rat]).*\1
Or all in one go, validating if string follows ^[rat]{3}$
rule as well:
^(?!.*?(.).*\1)[rat]{3}$
Breakdown:
^
Assert beginning of input string(?!
Construct a negative lookahead
.*?(.).*\1
Look for duplicate characters)
End of negative lookahead[rat]{3}
Match a 3 char long string including defined chars$
End of input string