1
votes

Première lettre utilisant RegEx de chaîne en JavaScript

J'ai une chaîne de nom complet.
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

Le résultat attendu est KC en utilisant uniquement RegEx

var str = "Keanu Charles Reeves";
console.log(str);
str = str.match(/\b(\w)/g).join('').substring(0, 2);
console.log(str);


4 commentaires

Alors quel est le problème? Voulez-vous dire que vous voulez obtenir KeCh en conséquence?


@ WiktorStribiżew peut le faire uniquement par RegEx? seulement besoin de KC


Vous ne pouvez pas à moins d'utiliser .replace . Quelque chose comme s.replace (/ [^] *? \ B (\ w) \ w * \ W + (\ w) [^] * | [^] + /, '$ 1 $ 2')


@ WiktorStribiżew Oui, c'est ce que je recherche uniquement RegEx Merci


3 Réponses :


0
votes

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);


1 commentaires

Seulement besoin de KC et en utilisant uniquement RegEx



1
votes

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


2 commentaires

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.



0
votes

var str = "Keanu Charles Reeves";
str = str.replace(/(\w).*? (\w).*/, "$1$2");
console.log(str);


0 commentaires