J'ai une chaîne de nom complet. Le résultat attendu est
De la chaîne à la première lettre de chaque mot. Puis-je obtenir seulement deux lettres des deux premiers mots de la chaîne en utilisant uniquement RegEx KC en utilisant uniquement RegExvar str = "Keanu Charles Reeves";
console.log(str);
str = str.match(/\b(\w)/g).join('').substring(0, 2);
console.log(str);
3 Réponses :
Comme vous avez écrit .substring (0,2) , il ne faudra que les 2 premières lettres, il suffit de le supprimer et cela fonctionnera
var str = "Keanu Charles Reeves";
console.log(str);
str = str.match(/\b(\w)/g).join('');
console.log(str);
Seulement besoin de KC et en utilisant uniquement RegEx
Votre approche est la meilleure et vous devez vous y tenir.
En tant qu'alternative uniquement éducative , vous pouvez utiliser une solution basée sur une méthode .replace ( car toutes les méthodes de correspondance nécessiteront de joindre plusieurs correspondances que vous souhaitez éviter, la raison étant que vous ne pouvez pas faire correspondre des morceaux de texte disjoints (non contigus) dans un seul groupe en une seule opération de correspondance):
s.replace(/[^]*?\b(\w)\w*\W+(\w)[^]*|[^]+/, '$1$2')
Il fait correspondre la chaîne jusqu'au premier mot char capturé dans le groupe 1, correspond au deuxième mot capturant son premier mot char dans le groupe 2, puis correspond à toute la chaîne jusqu'à la fin, ou - en l'absence de correspondance - [^] + saisit la chaîne entière et remplace la chaîne entière par le contenu des groupes 1 et 2.
Voir le démo regex
Laquelle est la meilleure utilisation de RegEx avec un remplacement ou une jonction avec une sous-chaîne?
@JayVaghasiya Multiple matches + join est très clair / lisible / maintenable et est donc préférable.
var str = "Keanu Charles Reeves"; str = str.replace(/(\w).*? (\w).*/, "$1$2"); console.log(str);
Alors quel est le problème? Voulez-vous dire que vous voulez obtenir
KeChen conséquence?@ WiktorStribiżew peut le faire uniquement par RegEx? seulement besoin de
KCVous ne pouvez pas à moins d'utiliser
.replace. Quelque chose commes.replace (/ [^] *? \ B (\ w) \ w * \ W + (\ w) [^] * | [^] + /, '$ 1 $ 2')@ WiktorStribiżew Oui, c'est ce que je recherche uniquement RegEx Merci