J'ai une réponse API de chaîne qui a toutes sortes de données mélangées. Ce que je cherche à faire est d'écrire une expression régulière pour cibler les balises p et retirer leur contenu et les mettre dans un tableau.
Exemple:
const arrayOfParagrahs = ['First para content', 'Second para content', 'Third Para content']
Le désir le résultat peut être:
const string = "Plain text <p>First para content</p> Another plain text<p>Second para content</p> Another random text and other stuff <p>Third Para content</p>"
3 Réponses :
Utilisez cette expression régulière (. *?) / g / comme dans l'extrait suivant:
let str = "Plain text <p>First para content</p> Another plain text<p>Second para content</p> Another random text and other stuff <p>Third Para content</p>"
var result = str.match(/<p>(.*?)<\/p>/g).map(val => {
return val.replace(/<\/?p>/g, '')
})
console.log(result)
Une autre solution (sans regex) consiste à utiliser des sélecteurs de dom javascript normaux.
Vous pouvez créer un élément dom avec votre chaîne html comme innerHTML.
Après cela, vous pouvez utiliser des sélecteurs javascript normaux comme getElementsByTagName ('p') ou querySelectorAll ('p') .
const str = "Plain text <p>First para content</p> Another plain text<p>Second para content</p> Another random text and other stuff <p>Third Para content</p>";
const virtEl = document.createElement('div');
virtEl.innerHTML = str;
const pArray = Array.from(virtEl.getElementsByTagName('p'));
const plessArray = pArray.map(e => e.textContent)
console.log(plessArray)
Essayez
const string = "Plain text <p>First para content</p> Another plain text<p>Second para content</p> Another random text and other stuff <p>Third Para content</p>" let arrayOfParagrahs= string.match(/<p>.*?<\/p>/g).map(x=>x.slice(3,-4)) console.log(arrayOfParagrahs);
string.match(/<p>.*?<\/p>/g).map(x=>x.slice(3,-4))
Copie possible du texte de correspondance Regex entre les balises