Я пытаюсь написать регулярное выражение, которое будет анализировать хеш-часть URL-адреса, удаляя любой хэшбанг в традиционном формате, который может присутствовать.
Например, я хочу удалить любое из следующего:
#
#/
#!
#!/
Вот что у меня сейчас есть:
/[(?:#|#\/|#!|#!\/)]+/
Однако это захват пустой группы в начале и разделение оставшихся строк. Например,
"#!/E/F".split(/[(?:#|#\/|#!|#!\/)]/); // ["", "", "", "E", "F"]
В то время как желаемый результат - это просто одна группа
["E/F"]
Может ли кто-нибудь указать на ошибку в моем регулярном выражении?
[ Если это имеет значение, я создал вышеуказанный вывод с помощью консоли JavaScript в Firebug. ]
3 ответа
Используйте string.replace
вместо string.split
.
#!?\/?
Используйте указанное выше регулярное выражение, а затем замените совпадение пустой строкой.
> '#!/E/F'.replace(/#!?\/?/g, '');
'E/F'
Ваше регулярное выражение кажется ужасно сложным. Возможно, это то, что вы ищете: "#! / E / F" .split (/ (#! / | # / | #! | #) /);
Вы проверяли документацию по регулярным выражениям Javascript?
Это может отличаться от того, что вы себе представляли, поскольку я не понимаю, почему вы используете: и? в вашем регулярном выражении.
:
и ?
там не было - я скопировал и вставил из незавершенной работы. Их не было в примере со строкой действий. С тех пор я отредактировал вопрос.
Если вы используете Javascript, вы можете просто использовать:
location.assign(location.href.replace(/#.*$/, ""));
Однако, если вы хотите удалить только перечисленные выше хэштеги, используйте:
var repl = location.href.replace(/#(!\/?|\/)?$/, '');
Похожие вопросы
Новые вопросы
regex
Регулярные выражения предоставляют декларативный язык для сопоставления шаблонов в строках. Они обычно используются для проверки строк, разбора и преобразования. Укажите язык (PHP, Python и т. д.) или инструмент (grep, VS Code, Google Analytics и т. д.), который вы используете. Не размещайте вопросы, требующие объяснения того, что означает символ или чему будет соответствовать конкретное регулярное выражение.
split
, когда она включает в вывод элементы разделения.