Найти вхождение в url по двум ключам, без ошибок в случаи неудачи

document.location.pathname.match(/(news|auto)\-/)[1]

Если url, путь каталогов...

/news-23
/auto-1113

Ок, работает, но в url нет указанных вхождений будет ошибка. При попытке достать значение, которого нет в массиве.

Задача в том, чтобы выполнить определенный код на страницах, в наименовании каталога которого есть указанные вхождения.

Как исправить, выставлять условие, проверять? Сразу сделать так, чтобы ошибку не выкидывало... Возможно?

Не спец в регулярках, если возможно выполнить все тоже самое, только уже на

document.URL

Будет круто, после домена, после первого слеша должно быть вхождение либо news либо auto. True - выполняем следующий код False - лишь бы ошибку js не выкидывал. Иначе скрипт не работает...


Ответы (1 шт):

Автор решения: stylok

Я думаю вам подойдёт оператор опциональной последовательности?.

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] )
})

А уж как воспользоваться этим... вам виднее, поскольку у нас нет перед глазами кода вашей обработки.

→ Ссылка