Удаление букв, расположенных между определенной строкой

Я хочу убедиться, что URL, который я получаю от window.location уже не содержит определенного идентификатора фрагмента. Если это так, я должен удалить его. Поэтому я должен найти URL-адрес и найти строку, которая начинается с mp- и продолжается до конца URL или следующего # (на всякий случай URL содержит более одного идентификатора фрагмента).

примеры входов и выходов:

www.site.com/#mp-1 --> www.site.com/
www.site.com#mp-1 --> www.site.com
www.site.com/#mp-1#pic --> www.site.com/#pic

мой код:

(это, очевидно, не работает правильно)

var url = window.location;
if(url.toLowerCase().indexOf("#mp-") >= 0){
   var imgString = url.substring(url.indexOf('#mp-') + 4,url.indexOf('#'));
   console.log(imgString);
}

есть идеи, как это сделать?

4 ответов


использовать регулярные выражения:

var url = window.location;
var imgString = url.replace(/(#mp-[^#\s]+)/, "");

Он удаляет из URL хэш все от mp- в char перед #.

Regex101 демо


что-то вроде этого? Для фильтрации нежелательной строки используется регулярное выражение.

var inputs = [
  "www.site.com/#mp-1",
  "www.site.com#mp-1",
  "www.site.com/#mp-1#pic"
];

inputs = inputs.map(function(input) {
  return input.replace(/#mp-1?/, '');
});

console.log(inputs);

выход:

["www.site.com/", "www.site.com", "www.site.com/#pic"]

jsfiddle: https://jsfiddle.net/tghuye75/

регулярное выражение, которое я использовал /#mp-1?/ удаляет любые строки, такие как #mp- или #mp-1. Для строки неизвестной длины до следующего хэштега вы можете использовать /#mp-[^#]*, который удаляет #mp-, #mp-1 и #mp-somelongstring.


можно использовать .replace для замены соответствия регулярному выражению ("#mp -", за которым следует 0 или более не-# символы) с пустой строкой. Если это возможно, есть несколько сегментов, которые вы хотите удалить, просто добавьте g флаг для регулярного выражения.

url = url.replace(/#mp-[^#]*/, '');

окне.местоположение имеет свойство hash so... окно.местоположение.хэш

самый примитивный способ-объявить

var char_start, char_end

и найти два " # " или один, и 2-й будет конец ввода.

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

удачи!