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

260
Visualizações
Regex: cómo hacer coincidir todos los caracteres en mayúsculas de una cadena que no sea ascii

Tengo cadenas como Japan Company , Chinese Company y esta expresión regular /([AZ])/g para obtener todos los caracteres en mayúscula y luego unirlos al resultado para emitirlos. Pero cuando la cadena de entrada no está en letras en inglés, la expresión regular no funciona.

 let string = "Japan Company"; console.log(string.match(/[AZ]/g).join('')); // JC

Pero cuando tengo una cadena como日本の会社

let string = "日本の会社"; console.log(string.match(/[AZ]/g).join(''));

Esto arroja una excepción como resultado de string.match(/[AZ]/g) es null .

Como estoy tratando de elisionar estas cadenas y los jeroglíficos no tienen mayúsculas, la expresión regular debe coincidir solo con los primeros caracteres de cada palabra donde las palabras están separadas por espacios.

¿Qué expresión regular genérica debo usar para esto?

Algo así como [:upper:] de POSIX, pero esto no funciona para el motor de expresiones regulares de JavaScript.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puedes usar

 (string.match(/(?<!\S)\S/g) || [string]).join('')

Vea la demostración de JavaScript:

 const strings = ["Japan Company", "japan company", "日本の会社"]; for (const string of strings) { console.log(string, '=>', (string.match(/(?<!\S)\S/g) || [string]).join('').toUpperCase()) }

La expresión regular (?<!\S)\S coincide con un carácter que no es un espacio en blanco al comienzo de la cadena o después de un carácter de espacio en blanco.

Un patrón de Safari, sin mirar hacia atrás:

 var strings = ["Japan Company", "japan company", "日本の会社"]; for (var i=0; i<strings.length; i++) { var m = strings[i].match(/(?:^|\s)(\S)/g) if (m === null) { console.log(strings[i], '=> ', strings[i]) } else { console.log(strings[i], '=>', m.join('').replace(/\s+/g, '').toUpperCase()) } }

about 4 years ago · Juan Pablo Isaza Relatório

0

Según sus comentarios, creo que esto debería hacer lo que quiere.

 function getUppercaseLetters(string) { // Find uppercase letters in the string let matches = string.match(/[AZ]/g); // If there are no uppercase letters, get the first letter of each word if (!matches) matches = string.split(" ").map(word => word[0]); // If there are still no matches, return an empty string. This should prevent against any edge cases. if (!matches) return ""; // Join the array elements and make it uppercase. return matches.join("").toUpperCase(); }
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