Corrigindo retrocesso catastrófico na expressão regular

O problema

Estou usando a seguinte expressão regular para verificar caminhos de arquivo válidos:

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

Usando a cadeia de testeV:\Sample Names\Libraries\DeveloperLib\DeveloperComDlgs\res é reconhecido como válido. Posso até adicionar caracteres inválidos ao início da string sem problemas. No entanto, quando adiciono um caractere inválido no final da string, a página da Web congela devido ao retorno catastrófico.

O que está causando isso nessa cadeia de caracteres regex?

Quebrando o Regex

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

Primeiro grupo: (?:[a-zA-Z]\:\\|\\\\)

Verifica seUma letra alfabética maiúscula ou minúscula seguida de dois pontos e uma barra invertidaUma barra invertida dupla

Segundo grupo: ([^\\\/\:\*\?\<\>\"\|]+(\\){0,1})

Primeira parte: [^\\\/\:\*\?\<\>\"\|]+Garante que não haja caracteres ilegais (\ /: *? <> "|)Segunda parte: (\\){0,1}Verifica uma barra invertida entre as seções quantas vezes forem necessárias

Eu acho que pode ser o{0, 1} causando o problema, pois isso permite o retorno, mas não tenho certeza. Alguma ideia?

questionAnswers(1)

yourAnswerToTheQuestion