• XSS.stack #1 – первый литературный журнал от юзеров форума

Подскажите пожалуйста по регулярке (JavaScript)

BlameUself

RAM
Пользователь
Регистрация
12.04.2022
Сообщения
121
Реакции
161
Подскажите пожалуйста по регулярке. Нужно все содержимое после items: и до </script> (желательно не включая их)


По идее -
items: (.*?)<\/script>
Либо
<script type="text\/javascript">(.*?)<\/script>


Но не работает так.

Часть текста страницы

["kkke",]
]); $(()=>{window.monetateQ.push(["trackData"]);})
</script>
<script type="text/javascript">
var dataObject = {
platform: "desktop",
pageName: "Somename",
facets: {

"brandname":"name"
},
items: [
{
plu: "1711113_plu",
description: "Item",
colour: "pink",
unitPrice: "70.00",
...... (тут айтемы)
onlineexlusive: false,
productGroups: [
"Valentines Day ",

]
}
]
};
</script>
 
Либо в два действия, сначала удалить все переносы строки \n|\r, а уже потом (.*items: )(.*)(};.*) или (.*items: )(.*)(<\/script>.*)

Либо использовать флаг s - может не правильно работать в разных браузерах
 
Подскажите пожалуйста по регулярке. Нужно все содержимое после items: и до </script> (желательно не включая их)


По идее -
items: (.*?)<\/script>
Либо
<script type="text\/javascript">(.*?)<\/script>


Но не работает так.

Часть текста страницы

["kkke",]
]); $(()=>{window.monetateQ.push(["trackData"]);})
</script>
<script type="text/javascript">
var dataObject = {
platform: "desktop",
pageName: "Somename",
facets: {

"brandname":"name"
},
items: [
{
plu: "1711113_plu",
description: "Item",
colour: "pink",
unitPrice: "70.00",
...... (тут айтемы)
onlineexlusive: false,
productGroups: [
"Valentines Day ",

]
}
]
};
</script>
JavaScript:
const regex = /items:(.+};).*<\/script>/gms;

// Alternative syntax using RegExp constructor
// const regex = new RegExp('items:(.+};).*<\\/script>', 'gms')

const str = `"kkke",]
]); \$(()=>{window.monetateQ.push(["trackData"]);})
</script>
<script type="text/javascript">
var dataObject = {
platform: "desktop",
pageName: "Somename",
facets: {

"brandname":"name"
},
items: [
{
plu: "1711113_plu",
description: "Item",
colour: "pink",
unitPrice: "70.00",
...... (тут айтемы)
onlineexlusive: false,
productGroups: [
"Valentines Day ",

]
}
]
};
</script>`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

Пойдёт?
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх