#javascript #regex #next.js
Вопрос:
У меня есть URL-адреса, например.
- https://example.com/about?hl=en#iron
- https://example.com/product/roller/?hl=enamp;lo=true
- https://example.com/learn/goin/?hl=enamp;lo=true#iron
И я хочу, чтобы это были строки.
'about'
'product'
'learn'
Я пытался. Я использую Next.js кстати.
import { useRouter } from 'next/router'
const { asPath } = useRouter()
const result = asPath.substring(1).split('?')[0].split('#')[0].split('/')[0]
Но есть ли лучший способ справиться с этим, например, с помощью RegEx
или другими методами?
А также с нетерпением жду, когда мне понравится.
'about' or ['about']
'product/roller' or ['product','roller']
'learn/goin' or ['learn','goin']
Возможно?
Комментарии:
1. Как насчет использования
^http[s]?://.*?/([^?/]*)
регулярного выражения, онлайн-демонстрация для этого регулярного выражения.
Ответ №1:
Создайте URL
объект, получите pathname
и извлеките не косые черты
let slug = url => new URL(url).pathname.match(/[^/] /g)
console.log(slug('https://example.com/about?hl=en#iron'))
console.log(slug('https://example.com/product/roller/?hl=enamp;lo=true'))
console.log(slug('https://example.com/learn/goin/?hl=enamp;lo=true#iron'))
Нерегулярным способом было бы .pathname.split('/').filter(Boolean)
Ответ №2:
location.pathname.split('/').slice(1);
https://developer.mozilla.org/en-US/docs/Web/API/Location/pathname