I have a regex that accepts 8-10 chars: only # and - (in random order)
^[-#]{8,10}$
But I need exactly 8 of # and 0-2 of -
For example, proper strings are:
-########-
########
##-###-###
Regex
^[#]{8}[-][0,2]$
It doesn't work cause accepts only 8 of# and some of - in this particular order
CodePudding user response:
You can assert 8-10 chars, and match 8 # chars surrounded by optional -
chars
^(?=.{8,10}$)(?:-*#){8}-*$
Explanation
^
Start of string(?=.{8,10}$)
Positive lookahead to assert 8 - 10 characters in total(?:-*#){8}
Match 8 times optional-
and then#
-*
Match optional trailing-
$
End of string
See a regex demo.