#javascript
#javascript
Вопрос:
Ниже у меня есть строка с некоторыми словами внутри фигурной скобки, я хочу извлечь слова и сделать их в виде массива
ввод:
let string = 'Hello John n, the time is ${time} and its ${day} of ${month} ${year}'
вывод:
let keys = ["time", "day", "month", "year"]
каков правильный подход к регулярному выражению для его достижения.
И как я могу заменить строку входными тегами, как показано ниже.
let string = 'Hello John n, the time is <input name='time' /> and its <input name='day' /> of <input name='month' /> <input name='year' />'
Комментарии:
1. Совет:
replace()
может принимать функцию в качестве аргумента подстановки.2. @tadman но replace может сделать .replace(‘text’, ‘newText’), но как я могу .replace(‘${?}’) динамические вещи
3. Функцией вместо строки. Посмотрите на примеры MDN. Есть несколько подобных.
Ответ №1:
Вы могли бы захватить все совпадающие группы
const string = 'Hello John n, the time is ${time} and its ${day} of ${month} ${year}'
const regex = /${(w )}/g
const res = [];
let matches
while (matches = regex.exec(string)) {
res.push(matches[1]);
}
console.log(res)
И о замене, сделайте строку .replace
с измененной разделенной группой, используя знак доллара ( $
) с порядком захваченной группы (индекс на основе 1)
const string = 'Hello John n, the time is ${time} and its ${day} of ${month} ${year}'
const res = string.replace(/${(w )}/g, '<input name="$1"/>')
console.log(res)