J'ai une chaîne
<script id="something" src="http://www.test.com/file1.js"></script>
et je dois générer un tableau avec les URL trouvées dans la chaîne.
<script src="http://www.test.com/file1.js"></script>
aussi I besoin de remplacer la ligne entière (y compris les balises de script balises) par rien.
c'est ce que j'ai jusqu'à présent pour trouver les URL
^(<script src=")(.*)("><\/script>)$
problème avec ça c'est que ça ne fonctionne qu'avec
['http://www.test.com/file1.js', 'http://www.test.com/file2.js']
si je définis mes scripts comme ça
<h1>hello/h1> <script src="http://www.test.com/file1.js"></script> <script src="http://www.test.com/file2.js"></script> <p>bye</p>
ça ne marche pas .
4 Réponses :
Pour obtenir les URL uniquement, vous pouvez faire:
^<script.*?src="(.*)".*?><\/script>$
Ceci détecte les cas où les attributs sont avant ET après l'attribut src .
p >
Pensez plutôt à utiliser un analyseur HTML approprié, comme cheerio: recherchez les balises , supprimez-les et insérez leur src dans un tableau:
const cheerio = require('cheerio');
const htmlStr = `<h1>hello/h1>
<script src="http://www.test.com/file1.js"></script>
<script src="http://www.test.com/file2.js"></script>
<p>bye</p>`;
const $ = cheerio.load(htmlStr);
const urls = [];
$('script').each((_, script) => {
urls.push(script.src);
$(script).remove();
});
const result = $('body').html();
console.log(result);
Utilisez cette insted
^(<script )(.*)(src=")(.*)("><\/script>)$
et les 4e groupes sont les URL
ou ^ (?: pour utiliser des groupes sans capture.
En relation: stackoverflow.com/a/1732454/3478852
Est-ce que cela répond à votre question? Extraction d'URL à partir d'une chaîne à l'aide de regex