Взрывная ловушка квантификатора

ема

Я использую следующее регулярное выражение для проверки правильности пути к файлу:

^(?:[a-zA-Z]\:\\|\\\\)([^\\\/\:\*\?\<\>\"\|]+(\\){0,1})+$

Использование тестовой строкиV:\Sample Names\Libraries\DeveloperLib\DeveloperComDlgs\res признается действительным Я даже могу добавить недопустимые символы в начало строки без проблем. Однако, когда я добавляю недопустимый символ в конец строки, веб-страница зависает от катастрофического возврата.

Что вызывает это в этой строке регулярного выражения?

Разрушая регулярное выражение

Полная строка: ^(?:[a-zA-Z]\:\\|\\\\)([^\\\/\:\*\?\<\>\"\|]+(\\){0,1})+$

Первая группа: (?:[a-zA-Z]\:\\|\\\\)

Проверяет либоЗаглавная или строчная буква алфавита, за которой следуют двоеточие и обратный слешДвойная обратная косая черта

Вторая группа: ([^\\\/\:\*\?\<\>\"\|]+(\\){0,1})

Первая часть: [^\\\/\:\*\?\<\>\"\|]+Проверяет, что нет недопустимых символов (\ /: *? <> "|)Вторая часть: (\\){0,1}Проверяет обратную косую черту между разделами столько раз, сколько необходимо

Я думаю, что это может быть{0, 1} вызывая проблему, так как это позволяет вернуться назад, но я не уверен. есть идеи?

Ответы на вопрос(0)

Ваш ответ на вопрос