Puede que se de el caso de que halles alguna incompatibilidad en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes añadir el código al proyecto final.
Solución:
Esta es la expresión correcta:
string regex = @"^[w-. ]+$";
w
es equivalente a [0-9a-zA-Z_]
.
Para validar un nombre de archivo, sugeriría usar la función proporcionada por C # en lugar de expresiones regulares
if (filename.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) != -1)
Si bien lo que pregunta el OP está cerca de lo que usa la respuesta actualmente aceptada (^[w-. ]+$
), es posible que haya otras personas que vean esta pregunta y tengan restricciones aún más específicas.
En primer lugar, si se ejecuta en una máquina que no sea de EE. UU./GB, w
permitirá una amplia gama de caracteres no deseados de idiomas extranjeros, de acuerdo con las limitaciones del OP.
En segundo lugar, si la extensión del archivo se incluye en el nombre, esto permite todo tipo de nombres de archivo extraños, aunque válidos, como file .txt
o file...txt
.
En tercer lugar, si simplemente está cargando los archivos en su sistema de archivos, es posible que desee una lista negra de archivos y/o extensiones como estas:
web.config, anfitriones, .gitignore, httpd.conf, .htaccess
Sin embargo, eso está considerablemente fuera del alcance de esta pregunta; requeriría todo tipo de información sobre la configuración para una buena orientación sobre cuestiones de seguridad. No obstante, pensé que debía plantear el asunto.
Entonces, para una solución en la que el usuario pueda ingresar el nombre completo del archivo, elegiría algo como esto:
^[a-zA-Z0-9](?:[a-zA-Z0-9 ._-]*[a-zA-Z0-9])?.[a-zA-Z0-9_-]+$
Garantiza que solo se utilice el alfabeto inglés, sin espacios iniciales ni finales, y garantiza el uso de una extensión de archivo con al menos 1 de longitud y sin espacios en blanco.
Probé esto en Regex101, pero para referencia futura, este fue mi “conjunto de pruebas”:
## THE BELOW SHOULD MATCH
web.config
httpd.conf
test.txt
1.1
my long file name.txt
## THE BELOW SHOULD NOT MATCH - THOUGH VALID
æøå.txt
hosts
.gitignore
.htaccess
Te mostramos reseñas y valoraciones
Ten en cuenta dar recomendación a esta noticia si te valió la pena.