JavaScript заменяет относительный путь - PullRequest
0 голосов
/ 15 февраля 2012

Мне нужно удалить уровни каталогов относительного URL и заменить косую черту подчеркиванием. некоторые из этих относительных URL-адресов включают один или два уровня вверх (../ или ../../). сейчас я использую:

$('area, a').click(function() { 
      cleanPath = $(this).attr('href').replace(/'..'/g, "").replace(/\//g, "_") );
});

но это не работает. Есть похожие вопросы, опубликованные здесь, но ничего, что, кажется, касается моей конкретной проблемы. очевидно, я не эксперт по RegEx. Может ли кто-нибудь помочь мне понять это?

1 Ответ

0 голосов
/ 15 февраля 2012

Ваше регулярное выражение, /'..'/g ищет все совпадения апострофа, за которым сразу следует любой символ, за которым сразу следует любой символ, за которым следует другой апостроф. Это связано с тем, что . соответствует любому символу, кроме символов новой строки (если не включен многострочный режим).

Попробуйте либо:

/\.\./g

или

/[.]{2}/g

Предваряя обратную косую черту, ваше регулярное выражение обрабатывает . как литерал . (то есть точку).

Включая . в [.], регулярное выражение также обрабатывает . как литерал . ({2} относится ровно к 2 вхождениям, вплотную).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...