我正在构建一个基本应用程序,允许用户在Javascript中使用#参数的会话之间共享或继续他们的搜索状态(我将其构建为SPA,因此GET参数不一定有效)。
在我的应用中,我可以使用类似/items#rarity=rare,common,uncommon&cost=ascending&category=primary
如果我想检查在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函数中捕获提取的字符串,以便我可以解析成本字符串?
答案 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("&")));