2
votes

RegEx - Analyse une chaîne pour des mots spécifiques

Je cherche à analyser une chaîne et trouver toutes les poignées (@ nom ) et les pousser chacune dans un tableau (sans le @ cependant) donc je peut les parcourir en boucle (avec forEach ) et leur envoyer à chacun une alerte. Chaque poignée est séparée par un espace.

 Exemple de message


1 commentaires

Pouvez-vous s'il vous plaît ajouter ce que vous avez essayé jusqu'à présent?


5 Réponses :


1
votes

try

let str= "Here @ann and @john go to @jane";

let m= str.match(/(?<=@)\w+/g);

m.forEach(x=> console.log(x));

Vous pouvez également utiliser une expression rationnelle lookbehind positive mais elle n'est pas prise en charge par Firefox encore (mais il fait partie de ES2018):

let str= "Here @ann and @john go to @jane";

let m= str.match(/@\w+/g).map(x=>x.replace(/./,''));
                              
m.forEach(x=> console.log(x));

(? correspond au mot qui commence après @ (à l'exclusion de ce caractère - lookbehind positif )


1 commentaires

Je reçois une erreur lorsque j'ouvre ma page Web maintenant dans Firefox, mais cela fonctionne toujours bien dans Chrome. L'erreur Firefox est: SyntaxError: groupe d'expressions régulières non valide



2
votes

Vous pouvez capturer @followedByName et ensuite remplacer @

let str = `@someName hey @someMoreNames`

let op = str.match(/(^|\s)@\w+/g).map(e=>e.trim().replace(/@/g,''))

console.log(op)


0 commentaires

2
votes

Si vous avez juste besoin d'extraire les utilisateurs d'un tweet, vous pouvez utiliser l'expression régulière suivante:

["@JohnSmith", "@DylanThompson"]

Par exemple:

var string = '@JohnSmith @DylanThompson Hey guys!';
var numberPattern = /@([a-zA-Z0-9]+)/g;

var res = string.match(numberPattern);

console.log(res);

Cela cracherait:

/@([a-zA-Z0-9]+)/g


0 commentaires

1
votes

Vous pouvez combiner match pour extraire les noms et slice pour supprimer @:

str = "@JohnSmith @DylanThompson Hey guys";
let arr = str.match(/@\w+/g).map(e=>e.slice(1));
console.log(arr);


0 commentaires

0
votes

Essayez ceci:

var str= "Here @ann and @john go to @jane";
var patt = /@(\w+)/g;

while ( (arr = patt.exec(str)) !== null ) { console.log(arr[1]); }


0 commentaires