我似乎无法找到正确的JavaScript正则表达式语法来获取url字符串,获取其他指定字符之间的字符进行编码,然后插回。我的例子可能更容易解释:
示例:
var url = 'http://www.myurl.com?t=23&dbUrl=http://www.encodeurl.com?t=23&otherUrl=http://www.anotherurl.com'
我需要获取'& dbUrl ='和'http'的下一个实例之间的值。取值,'encodeURIComponent',然后将其插回到var url中以获取:
我尝试在http的任何实例上拆分它,只是编码它的[1]索引但我并不总是知道字符串'& dbUrl'何时存在。我不打算打破每个查询参数,只是改变一个查询参数和下一个'http'实例的任何实例之间的URL。只是因为另一个查询参数,例如:'& otherUrl ='我不知道确切的查询参数,所以我不知道它何时停止,除非找到http。我只会知道'& dbUrl ='的查询参数。有任何想法吗?
答案 0 :(得分:1)
一种方法是利用replace
功能使用function
作为第二个参数来返回转换后的字符串。函数的返回结果将最终作为原始字符串中的替换值
url.replace(/(&dbUrl=)(.+)(?=http)/,
/*
m1 = first matched group
e.g, "&dbUrl=http://www.encodeurl.com?t=23&otherUrl="
m2 = second matched group
e.g, "&dbUrl="
m3 = third matched group
e.g, "http://www.encodeurl.com?t=23&otherUrl="
*/
function(m1, m2, m3) {
return m2 + encodeURIComponent(m3);
})
// returns,
// "http://www.myurl.com?t=23&dbUrl=http%3A%2F%2Fwww.encodeurl.com%3Ft%3D23%26otherUrl%3Dhttp://www.anotherurl.com"