Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

142
Vistas
¿Evitar que la aplicación cree carpetas del sistema de Windows usando expresiones regulares?

Estoy creando una aplicación basada en navegador que permite a los usuarios crear carpetas con algunos archivos .json (no es gran cosa). La cuestión es que al marco que estoy usando (NW.js) no parece importarle permitir que los usuarios creen carpetas llamadas "CON" o "NUL"; Se supone que no deben crearse, los archivos que contienen simplemente desaparecen y es algo difícil eliminar la carpeta por sí mismos.

No puedo hacer ningún problema para hacer algo como esto para evitar que suceda:

 var newFolder = "nul"; function checkFolderName(text) { switch(newFolder) { case "con": console.log("folder can't be created") break; case "nul": console.log("folder can't be created") break; // and so on... there's about 23 windows-reserved names that I could find default: console.log("folder can be created") }} checkFolderName(newFolder);

Pero me pregunto si hay alguna forma más fácil de verificar esto a través de Regex/Javascript, o tal vez algún enfoque diferente para esta idea.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Aquí hay una forma un poco más limpia de escribir lo que quieres.

Función renombrada para implicar que toma una cadena y devuelve un valor booleano.

Si la cadena de entrada no es válida, devuelve falso.

Todos los nombres prohibidos se agrupan en una lista que se actualiza fácilmente.

La validez se comprueba si la lista contiene el nombre.

 function folderNameIsValid (name) { let valid = false; if (!name || typeof(name) !== 'string') { return valid; } const bannedNames = [ 'con', 'nul' ]; if (!bannedNames.includes(name.toLowerCase())) { valid = true; } return valid; } if (folderNameIsValid('NUL')) { console.log('folder can be created'); } else { console.log('folder cannot be created'); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Si quieres usar expresiones regulares, puedes hacerlo así:

 if (/^con|nul|abc|xyz$/.test(newFolder)) console.log("folder can't be created");

el | carácter significa 'o'. por lo que la función de prueba devolverá verdadero si newFolder es "con" o "nul" o "abc" o "xyz"

Los signos ^ y $ son el principio y el final de la cadena.

Si quieres saber exactamente cuál fue la parte ilegal, puedes usar esto:

 var matching = newFolder.match(/^con|nul|abc|xyz$/); if (matching) { console.log("folder can't be created, found " + matching[0]); }

También puede usar esta notación de cambio de caso:

 switch (newFolder) { case "con": case "nul": case "abc": case "xyz": console.log("folder can't be created"); break; default: console.log("folder can be created"); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Mi amigo podría ayudarme a hacer esto con expresiones regulares :

 let valid = /^(con|prn|aux|nul|com|lpt)\d*$/gi.test(newFolder) console.log(valid) // true or false

Sin embargo, comienza a ser bastante complicado si desea agregar más "nombres prohibidos" , por lo que la sugerencia de jaredcheeda es bastante útil en este caso.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda