Найти вхождение в url по двум ключам, без ошибок в случаи неудачи
document.location.pathname.match(/(news|auto)\-/)[1]
Если url, путь каталогов...
/news-23
/auto-1113
Ок, работает, но в url нет указанных вхождений будет ошибка. При попытке достать значение, которого нет в массиве.
Задача в том, чтобы выполнить определенный код на страницах, в наименовании каталога которого есть указанные вхождения.
Как исправить, выставлять условие, проверять? Сразу сделать так, чтобы ошибку не выкидывало... Возможно?
Не спец в регулярках, если возможно выполнить все тоже самое, только уже на
document.URL
Будет круто, после домена, после первого слеша должно быть вхождение либо news либо auto. True - выполняем следующий код False - лишь бы ошибку js не выкидывал. Иначе скрипт не работает...
Ответы (1 шт):
Я думаю вам подойдёт оператор опциональной последовательности — ?.
document.location.pathname.match(/(news|auto)\-/)?.[1]
или
document.URL.match(/(news|auto)\-/)?.[1]
Как вам удобнее, который вернёт либо значение, либо undefined
без каких-либо ошибок.
[ '/news-23',
'/auto-1113',
'/',
'/foo',
'https://my.site/news-23',
'https://my.site/auto-1113',
'https://my.site/',
'https://my.site',
'https://my.site/foo',
].forEach((dlp) => {
console.log( dlp.match(/(news|auto)\-/)?.[1] )
})
А уж как воспользоваться этим... вам виднее, поскольку у нас нет перед глазами кода вашей обработки.