#javascript
#javascript
Вопрос:
Мне нужно извлечь значение параметра запроса из URL-адреса, но параметр меняется на каждой странице.
Например, я хочу получить переменную color, но она всегда меняется в зависимости от ProductID. В этом случае это ‘dwvar_2000440926_color’, но для другого продукта это будет ‘dwvar_545240926_color’. _color остается неизменным, поэтому я хотел бы отключить это:
https://www.example.com/us/2000440926.html ?dwvar_2000440926_цвет=02
Спасибо!
Ответ №1:
Базовое регулярное выражение будет работать
const myURL = new URL("https://www.example.com/us/2000440926.html?dwvar_2000440926_color=02")
console.log(myURL.search.match(/_color=([^amp;] )/)[1]);
// more specfic
console.log(myURL.search.match(/dwvar_d _color=([^amp;] )/)[1]);
Комментарии:
1. Отлично работает — спасибо!
Ответ №2:
Вы должны использовать регулярное выражение. Основываясь на описанном вами описании поведения URL, вы могли бы сделать что-то вроде этого:
const url = new URL("https://www.example.com/us/2000440926.html?dwvar_2000440926_color=02");
// Now url.search contains your query parameters.
// We gonna apply the regex on it to capturing the color id
let matches = url.search.match(/dwvar_d _color=(d )/)
// `matches` now contains the captured groups
console.log(matches[1])
// log : 02
Ответ №3:
Предполагая, что 1) вы хотите сделать это на стороне клиента 2) параметр цвета всегда начинается с dwvar
, как показано в вашем примере, и 3) что никогда не существует более одного параметра dwvar, вы можете использовать следующий javascript:
let searchParams = new URLSearchParams(document.location.search);
searchParams.forEach((param_value, param_name) => {
if (param_name.indexOf('dwvar') == 0) {
console.log(param_value)
}
})
Ответ №4:
window.location.search.slice(1).split('amp;').reduce((acc, it) => {
const [key, val] = it.split('=');
return {
...acc,
[key]: val,
};
}, {});