Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

149
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda