javascript - 将URL中括号内的字符串转换为查询参数: Javascript

标签 javascript jquery url

我想将搜索 URL 中的 {} 中的字符串转换为查询参数,这将有助于用户在网络分析工具中捕获搜索词。

这就是我想做的,让我们说

搜索网址是:

example.com/search/newyork-gyms?dev=desktop&id=1220391131

用户输入将是:

var search_url_format = '/search/{city}-{service}

输出网址:

example.com/search?city=newyork&service=gyms&dev=desktop&id=1220391131

问题是当使用正则表达式 {(.*)} 时,它会捕获整个字符串 {city}-{service}

但我想要的是[{city},{service}]

URL格式也可以是这样的

search/{city}/{service}/

search/{city}_{service}/

我尝试过的是单个变量。

它返回正确的输出。

例如:URL:/search/newyork

用户输入:/search/{city}

输出:/search/newyork?city=newyork

网址:/search-germany

用户输入:/search-{country}

输出:/search-germany?country=germany

var search_url_format = '/search/{city}' //User Enters any variable in brackets
var urloutput = '/search/newyork' //Demo URL

//Log output

console.log(URL2Query(search_url_format)) //Output: '/search/newyork?city=newyork'

function URL2Query(url) {
  var variableReg = new RegExp(/{(.*)}/)
  var string_url = variableReg.exec(url)

  var variable1 = string_url[0]


  //Capture the variable 
  var reg = new RegExp(url.replace(variable1, '([^\?|\/|&]+)'))
  var search_string = reg.exec(urloutput)[1]


  if (location.search.length > 0) // if no query parameters
  {
    return urloutput + "?" + string_url[1] + "=" + search_string
  } else {
    return urloutput + "&" + string_url[1] + "=" + search_string

  }
}

最佳答案

你错过了两件事: 括号来匹配组,并使用 .* 其中包含“{”符号。 因此可以使用 match 而不是 exec,如下所示:

var search_url_format = '/search/{city}-{service}' //User Enters any    
var variableReg = new RegExp(/({\w+})/g)
var string_url = url.match(variableReg); // [{city}, {service}]

关于javascript - 将URL中括号内的字符串转换为查询参数: Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48059876/

相关文章:

javascript - 切换 div 内容 JavaScript jQuery

android - 如何在android中打开链接?

javascript - 使用 Angular 触发内容可编辑

javascript - 侧面标签定位绝对和溢出窗口?

javascript - 如何制作一个 JSON 来将 src 和 dest 地址放入其中,并且我们可以在 grunt.js 中调用该 JSON?

javascript - 尝试使用 jquery.mousewheel 触发滚动事件

javascript - 如果有多个div具有相同的函数,如何使用函数调用div的属性值?

java - JQuery Ajax 使用 success() 回调进行空响应

swift - 在 Swift 中从 Plist 加载 Url 图片

Android 下载 Intent