После перебора в regex101 в течение нескольких минут, я понял, что ] не нужно экранировать, если он немедленно обращается к [.
В regex101 шаблон []-a-z] описывается как
/[]-a-z]/ []-a-z] match a single character present in the list below ]-a a single character in the range between ] and a (case sensitive) -z a single character in the list -z literally (case sensitive)
Но я всегда думал, что если - нужно подбирать буквально, не избегая его, он должен либо идти в начале, либо в конце.
Затем почему мой шаблон не распознан как ошибка? Почему -z буквально соответствует одному символу в списке -z?