如何在javascript中将字符串中的所有'\'和'/'字符替换为' - '

时间:2009-10-30 00:31:25

标签: javascript regex

我有以下javascript。

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

这会将所有空格替换为+,仅替换第一个\,将第一个/替换为-

我需要用\替换所有/-

有什么建议吗?或者这应该是URLEncoded?

3 个答案:

答案 0 :(得分:2)

尝试:

query.replace(/\s+/g, '+').replace(/[/\\]/g, '-')

答案 1 :(得分:1)

第一个正则表达式替换了所有空格,因为它有一个'g'修饰符。

你需要另外两个'替换'

答案 2 :(得分:1)

您基本上是在执行URI编码的子集。根据需要使用encodeURI()encodeURIComponent()。请参阅Comparing escape(), encodeURI(), and encodeURIComponent()(不推荐使用escape())。

假设_searchUrl类似于

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

然后你应该这样做:

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

没有必要(或理由)使用正则表达式重新发明(部分)URI编码规则。