1
votes

RegEx pour trouver des URL dans une chaîne

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 .


2 commentaires

4 Réponses :


-1
votes

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 >


0 commentaires

3
votes

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


0 commentaires

-1
votes

Ce RegEx peut vous aider à obtenir ces URL:

^<.+="(.+)"><\/.+>$


0 commentaires

-1
votes

Utilisez cette insted

^(<script )(.*)(src=")(.*)("><\/script>)$

et les 4e groupes sont les URL

ou ^ (?: pour utiliser des groupes sans capture.


0 commentaires