抓取 javascript 中两个特定字符前后的子串

Grab substring after and before two specific characters in javascript

我有一个这样的 url 搜索键: ?retailerKey=A 我想获取 retailerKey 子字符串。我看到的所有示例都以如何在 char 之前使用 indexOf 示例为例。我怎样才能实现这个从字符串中得到这个子字符串?retailerKey=A

使用正则表达式。 以下将 return 字符 ?= 之间的值

var result =  "?retailerKey=A".match(/\?(.*)\=/).pop();
console.log(result);

如果您希望始终获取查询符号和等号之间的字符串 ?ThisString= 那么你可以简单地使用 indexOf 例如

str.slice(str.indexOf('?')+1,str.indexOf('='))

您可以 split() 任何 ?= 上的字符串,然后从结果数组中取出中间项 ([1])。

const data = "?retailerKey=A";
const result = data.split(/[\?=]/)[1];

console.log(result);

如果你有多个参数,创建一个对象 fromEntries() 会很有趣。

const data = "?retailerKey=A?otherKey=B";

const keyVals = data.split(/[\?=]/).filter(x => x); // keys and values
const result = Object.fromEntries(keyVals.reduce((acc, val, i) => {
  // create entries
  const chunkI = Math.floor(i / 2);
  if (!acc[chunkI]) acc[chunkI] = [];
  acc[chunkI].push(val);
  return acc;
}, []));

console.log(result);

使用库可能是更好的选择,但要从头开始:我建议使用 split 和正则表达式。

// split for char equals to ? or & or =;
const url = '/toto?titi=1&tata=2';
const args = url.split(/[\?\&\=]/);
// shift the first element of the list since it the base url before "?"
args.shift();

// detect malformed url
if (args.length % 2) {
    console.error('malformed url', args);
}

const dictArgs = {};

for (let i = 0; i < args.length /2; i ++) {
     const key = args[2*i];
     const val = args[2*i+1];
     dictArgs[key] = val;
}

console.log(dictArgs);