Подтвердить что ты не робот

Что означает a-z-A-Z в регулярном выражении?

Я работал с другим кодом, и я пробежал регулярное выражение [^0-9a-z-A-Z]. Это имеет близкое сходство с общим [^0-9a-zA-Z], предназначенным для исключения не буквенно-цифровых символов, но обратите внимание на дополнительную тире в середине, между строчными z и прописными буквами A.

Я не очень хорошо знаком с регулярными выражениями, но теперь я прочитал несколько страниц, и ни одно из правил, которые я видел, похоже, не охватывает то, что будет означать этот синтаксис. Возможно, это даже не действительный синтаксис, но интерпретатор регулярных выражений Golang, похоже, не возражает. Буду признателен за любые разъяснения. Спасибо.

4b9b3361

Ответ 1

Тире в классе символов в месте, где он не может быть интерпретирован как диапазон, интерпретируется как буквальная тире. Таким образом, выражение исключает символы 0 - 9, a - z, a - z и -. Вот почему нет синтаксической ошибки.

Это, наверное, опечатка. Если тире должно быть там, то для предотвращения путаницы он должен быть экранирован и/или удален из диапазонов, например [^0-9a-zA-Z\-]

Ответ 2

Он исключает знак минуса.

Вы можете проверить регулярное выражение здесь: http://www.regexr.com/