Сопоставить массив частей со строкой через регулярное выражение в deno (машинопись)

Я использовал регулярное выражение "(.*?)", чтобы получить все, что находится между кавычками в строке. После выполнения операций над массивом, предоставленным exec(), теперь у меня есть массив этих фрагментов, которые нужно вернуть в строку. Как я могу сопоставить этот массив обратно со строкой, используя регулярное выражение?

Я знаю о замене их всех одним конкретным значением, но я не уверен, как это сделать с массивом. Возможно, есть какая-то map() функция, которую я могу использовать для pop() значений из массива?

Я новичок в Deno и JS в целом (исходя из более низкого уровня), так что извините, если я просто пропустил документ или что-то в этом роде.

Можете ли вы добавить пример ожидаемого ввода/вывода?

Marcos Casagrande 04.04.2023 20:03

Когда вы выполняете замену регулярного выражения, замена может быть функцией, а не строкой. Функция может возвращать динамически определяемые результаты, поэтому она может выполнять поиск в массиве.

Barmar 04.04.2023 20:06

@MarcosCasagrande, в моем случае я пытаюсь проанализировать HTML и сопоставить все домены, включенные в другой домен. Вероятно, я мог бы обойти всю эту проблему с помощью другого шаблона проектирования. по сути, может быть что-то вроде этого: <a href = "https://example.com/foo">foo</a> и я хочу превратить это в это: <a href = "https://example.org/?url=https://example.com/foo">foo<‌​/a>

a human being 04.04.2023 20:10

@Barmar хорошо, наверное, должно сработать. какую функцию замены вы конкретно имеете в виду? (не тот, который нужно ввести, я имею в виду метод регулярного выражения)

a human being 04.04.2023 20:12
result = str.replace(/regex/, (match, group1) => ...)
Barmar 04.04.2023 20:15

Вам не нужно использовать exec() для этого. Просто используйте str.replace(/regexp/g, 'replacement string that uses $1 and $2'), чтобы подставить группы захвата в результат.

Barmar 04.04.2023 20:18
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование .replace с функцией замены — это самый простой способ добиться того, чего вы хотите.

const html = `
    <a href = "https://example.com/foo">foo</a>
    <div></div>
    <a href = "https://example.net/foo">foo</a>
`;

const result = html.replace(/"(.*?)"/g, (match, group) => {
    return `"https://example.org/?url=${group}"`;
});

console.info(result);

Вы также можете использовать строку замены с шаблоном замены $n

 const html = `
        <a href = "https://example.com/foo">foo</a>
        <div></div>
        <a href = "https://example.net/bar">bar</a>
 `;
 
const result = html.replace(/"(.*?)"/g, `"https://example.org/?url=$1"`);

console.info(result);

Другие вопросы по теме