Если по какой-то причине у вас нет контроля над тем, что находится в window.location.href
, вы можете легко решить эту проблему с помощью регулярных выражений:
function getPosName(uri) {
let match = uri.match(/(?<=posName=)(.+?)(?=\&\w+?\=|$)/);
return match[1];
}
console.log(getPosName( "xemple.com?posName=Content+&+Community+Manager+(H/F)")); //Content+&+Community+Manager+(H/F)
console.log(getPosName( "exemple.com?posName=Club+&+Animator+(H/F)")); //Club+&+Animator+(H/F)
console.log(getPosName( "exemple.com?posName=Club+&+Animator+(H/F)&test=1")); // Club+&+Animator+(H/F)
Объяснение регулярного выражения:
(?=postName=)
поиск назад, чтобы найти postName=
для начала матча
(.+?)
совпаденийчто угодно, вплоть до паттерна «Lookahead» ниже
(?=\&\w+?\=|$)
паттерн «lohahead» для литерала &
, за которым следует некоторый текст любой длины от 1 и далее \w+?
, за которым следует =
.Все это, или мы находимся в конце входной строки, обозначенной $
Обновление
Регулярное выражение выглядит как относительно новый.Если браузер или приложение не поддерживают просмотр регулярных выражений (например, Google Tag Manager в настоящее время), попробуйте этот обходной путь вместо этого:
function getPosName(uri) {
let match = uri.match(/posName=(.+?)(?=\&\w+?\=|$)/);
return match[1];
}
console.log(getPosName( "xemple.com?posName=Content+&+Community+Manager+(H/F)")); //Content+&+Community+Manager+(H/F)
console.log(getPosName( "exemple.com?posName=Club+&+Animator+(H/F)")); //Club+&+Animator+(H/F)
console.log(getPosName( "exemple.com?posName=Club+&+Animator+(H/F)&test=1")); // Club+&+Animator+(H/F)