有什么方法可以退回拆分操作的丢弃部分吗?

时间:2016-07-24 21:47:13

标签: javascript

我正在构建一个基本应用程序,允许用户在Javascript中使用#参数的会话之间共享或继续他们的搜索状态(我将其构建为SPA,因此GET参数不一定有效)。

在我的应用中,我可以使用类似/items#rarity=rare,common,uncommon&cost=ascending&category=primary

的URI

如果我想检查在react组件中设置成本过滤器的状态,我想要提取asecnding,然后选中升序复选框以设置页面加载时的状态。

如果我使用Javascript的split功能与regex结合使用,我可以通过以下方式捕获有关成本的所有信息:

var hash = window.location.hash;
hash = hash.split(/cost.*&/);

现在,这显然将返回一个数组,分为两部分,第一部分是/items#rarity=rare,common,uncommon&category=primary,因为split函数将在提供的条件下分割,在我的情况下匹配来自regex的字符串。< / p>

有没有办法可以从split函数中捕获提取的字符串,以便我可以解析成本字符串?

2 个答案:

答案 0 :(得分:2)

没办法。哦,有!只需将正则表达式包装在捕获组中。

var s = '/items#rarity=rare,common,uncommon&cost=ascending&category=primary';
r = s.split(/(cost.*&)/);

console.log(r[0]);
console.log(r[1]); //there is the "thrown" part
console.log(r[2]);

答案 1 :(得分:1)

要达到预期效果,请使用以下

var x="/items#rarity=rare,common,uncommon&cost=ascending&category=primary";

console.log(x.split('cost=')[1].substring(0,x.split('cost=')[1].indexOf("&")));

http://codepen.io/nagasai/pen/RRyLmA