Как вырезать из строки часть от символа до символа?
Мне необходимо вырезать из строки скрипт, к примеру моя строка выглядит так:
<p>
<script>console.log('hello')</script>
<script>console.log('hello')</script>
</p>
<p>
<script>console.log('my name')</script>
</p>
Отсюда мне нужно получить три скрипта
<script>console.log('hello')</script>
<script>console.log('hello')</script>
<script>console.log('my name')</script>
Как это можно реализовать?
Вот что у меня получилось реализовать:
let arr = Array.from(items.description?.matchAll(/<(.*?)>/g));
console.log(arr)
let mass = arr.filter(it => it.includes('script'))
let result = mass[0].input.replace('<p>', '');
Как можно это реализовать с помощью регулярных выражений?
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
Отсюда мне нужно получить три скрипта. Как это можно реализовать?
Например вот так...
const str = `<p>
<script>console.log('hello')<\/script>
<script>console.log('hello')<\/script>
<\/p>
<p>
<script>console.log('my name')<\/script>
<\/p>`
const o = new DOMParser().parseFromString(str, "text/html")
const s = [...o.querySelectorAll('script')].map(o => o.outerHTML).join('\n')
console.log(s)
Или регуляркой
const str = `<p>
<script>console.log('hello')<\/script>
<script>console.log('hello')<\/script>
<\/p>
<p>
<script>console.log('my name')<\/script>
<\/p>`
const re = /<script>.*?<\/script>/gi
let s = str.match(re).join('\n')
console.log(s)