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.
5 Réponses :
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));
où (? correspond au mot qui commence après @ (à l'exclusion de ce caractère - lookbehind positif )
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
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)
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
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);
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]); }
Pouvez-vous s'il vous plaît ajouter ce que vous avez essayé jusqu'à présent?