#javascript #regex #match
#javascript #регулярное выражение #совпадение
Вопрос:
Я очень новичок в регулярных выражениях и могу с уверенностью сказать, что я разочаровывающе сбит с толку.
У меня есть стандартный сайт со следующей структурой URL:www.example.com/asx/symbol
Я пытаюсь использовать Javascript и регулярное выражение для сопоставления строки ‘symbol’.
Например, www.example.com/asx/tls будет соответствовать (и возвращать) ‘tls’ (но только если перед ним был ‘/asx /’).
Если URL изменился на www.example.com/asx/cba тогда будет возвращен ‘cba’.
function () {
var qs = window.location.search || "";
var m = qs.match(/asx/([a-z0-9] )/i);
console.log(m);
return m ? m[1] : "";
Консоль.возврат журнала всегда равен нулю, и я не могу понять, почему. Я занимался этим несколько часов, прочитал слишком много руководств и попробовал regex101…
В нем говорится: «/ Неэкранированный разделитель должен быть экранирован обратной косой чертой ()»
Но затем, когда я добавляю … / i, и это не соответствует строке subject.
Я надеюсь, что кто-нибудь сможет помочь новичку.
Спасибо!
Комментарии:
1.
window.location.search
содержит часть URL после?
.2. Я думаю, вы хотите сопоставить
window.location.pathname
3. согласен с @Barmar . Само регулярное выражение кажется прекрасным
4. Это можно было бы решить с помощью самой простой отладки:
console.log(qs);
. О, смотрите, оно пустое. Ага.
Ответ №1:
Вы не можете использовать window.местоположение.выполните поиск, чтобы получить имя пути ( window.location.search: возвращает часть URL-адреса querystring). Вы просто заменяете window.местоположение.поиск по окну.Расположение.имя пути.
Ответ №2:
const url = 'www.example.com/asx/symbol'
const match = url.match(/asx/[D]*/g).join('').split('/').slice(1).join('');
console.log(match)