Как вырезать из строки часть от символа до символа?

Рейтинг: 0Ответов: 1Опубликовано: 25.05.2023

Мне необходимо вырезать из строки скрипт, к примеру моя строка выглядит так:

<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Принят

Отсюда мне нужно получить три скрипта. Как это можно реализовать?

Например вот так...

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)