Создать элемент управления RegEx для URL

У меня проблема с моим текущим веб-приложением. Действительно, когда я поставил текущую ссылку: https://localhost:44311/#shop, моя страница отображалась отлично. Вот картинка:

Но затем, когда я пытаюсь изменить свой URL-адрес на: https://localhost:44311/#/, чтобы проверить управление перенаправлением, контент отображается в том же контенте, вот картина того, что произошло:

В настоящее время все мои вызовы ajax вызываются снова и снова и снова (бесконечный цикл).

Я пытаюсь добавить контрольное регулярное выражение для #/ и стараюсь уважать #/xxxx/xxxxx. Но безуспешно. Если вы можете помочь мне, это может быть очень приятно! Вот мой JS, где я управляю страницами загрузки:

var ui = {
   controller: {
       page: {}
   },
   component: {
       category: null
   }
};
ui.controller.pageLoad = function (hash = null) {
   if (hash === null) {
       hash = window.location.hash;
       if (hash.length < 2 || hash[0] !== "#") {
           hash = "/shop";
       }
   } else if (hash.length < 2 || hash[0] === "#" && hash[1] === '/') { // add control regex for #/, must respect #/xxxx/xxxxx
       hash = "/shop";
   }

   $.get(hash.substring(1), function (data) {
       ui.controller.page = null;
       $("#content").html(data);
   }).fail(function (error) {
       $.get("/Home/Error?status = " + error.status, function (data) {
           ui.controller.page = null;
           $("#content").html(data);
       });
   });
};
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете создать функцию isValidHash и использовать ее в своем выражении if:

function isValidHash(hash) {
  return typeof hash === "string" && /^#(/[a-z0-9-]+)+$/.test(hash);
}

function test(v) {
  console.info(`'${v}' is ${isValidHash(v) ? '' : 'NOT '}valid`);
}

test(null);            // NO - not a string
test('#');             // NO - too short
test('#shop');         // NO - no slash
test('#/shop');        // YES
test('#/shop/item-9'); // YES

О да спасибо работает. У вас есть ссылка, чтобы поделиться со мной, сэр, о регулярном выражении? Я еще новичок ахах. Еще раз спасибо!

harili 10.12.2020 11:29

Конечно, вы можете пойти сюда, увидеть это регулярное выражение в действии, и справа вы найдете объяснение всего в этом регулярном выражении.

blex 10.12.2020 13:22

Другие вопросы по теме