我有以下javascript。
window.location.href = _searchUrl + query.replace(/\s+/g, '+')
.replace('/', '-')
.replace('\\','-')
这会将所有空格替换为+
,仅替换第一个\
,将第一个/
替换为-
。
我需要用\
替换所有/
和-
有什么建议吗?或者这应该是URLEncoded?
答案 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编码规则。