Как я могу заменить все символы «\» и «/», в строке на «-», в JavaScript - PullRequest
1 голос
/ 30 октября 2009

У меня есть следующий javascript.

window.location.href = _searchUrl + query.replace(/\s+/g, '+')
                                         .replace('/', '-')
                                         .replace('\\','-')

заменяет все пробелы на + и только первые \ и первые / на -.

мне нужно, чтобы он заменил ВСЕ \ и / на -

Есть предложения? или это должен быть URLEncoded?

Ответы [ 3 ]

2 голосов
/ 30 октября 2009

Попробуйте:

query.replace(/\s+/g, '+').replace(/[/\\]/g, '-')
1 голос
/ 30 октября 2009

Вы в основном делаете подмножество кодировки URI. Используйте encodeURI() или encodeURIComponent() в зависимости от ситуации. Смотрите Сравнение escape (), encodeURI () и encodeURIComponent () (escape () устарело).

Предполагая, что _searchUrl является чем-то вроде

http://mysite.com/search?q=

тогда вы должны сделать это:

window.location.href = _searchUrl + encodeURIComponent(query);

Нет необходимости (или причины) заново изобретать (частично) правила кодирования URI с помощью регулярных выражений.

1 голос
/ 30 октября 2009

Первое регулярное выражение заменяет ВСЕ пробелы, поскольку оно имеет модификатор 'g'.

Он нужен вам для двух других «замен»

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