2011-04-25 25 views
0

这个网址我如何解析这个字符串在JavaScript

"?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f" 

,我只需要标记出它

200bfaa1f5d6cda4c782f98b15f32e7f 

如何是最好的方式解析了...看来永远是最后

+0

正如你可以看到许多问题的答案改变他们的方法,有些可能不适合,如果URL甚至略有不同,这主要是因为答案是指t o这个特定的情况,并没有其他的变种,因为他们不知道他们,如果这是唯一可能的“形式”,你可能会遇到的URL,这很好,但如果你最后可能'&otherthing = 123',有些可能无效,也许澄清会有所帮助。 – Trufa 2011-04-25 14:17:49

+0

你的权利,我注意到有可能在最后得到var ...所以我去这个input.match(/令牌=(\ w +)/)[0123] – Trace 2011-04-25 14:21:00

回答

2

这应做到:

var 
    input = "?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f", 
    output = input.split("=").splice(-1)[0]; // output === "200bfaa1f5d6cda4c782f98b15f32e7f" 

或者,如果你不知道该令牌总是最后一个值:

var 
    input = "?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f&foo=bar&baz=spam", 
    output = input.substring(input.indexOf('token=')).split(/[=&]/)[1]; // output === "200bfaa1f5d6cda4c782f98b15f32e7f" 
+0

作品很好尤其是因为令牌总是最后。其他方面,这是行不通的。 – g19fanatic 2011-04-25 14:08:07

1

或者使用正则表达式。在这种情况下,它会像

格式

var re = /token\=(\S+)/i; 
alert(url.match(re)[1]); 
+1

或... alert(input.match(/ token =(\ w +)/)[1]) – 2011-04-25 14:10:51

0

您只需更换另一部分:

s = "?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f" 

s.replace(/.*token=/, '') 

#=> "200bfaa1f5d6cda4c782f98b15f32e7f" 
0
s = "?route=system/template/update&template_id=22&token=200bfaa1f5d6cda4c782f98b15f32e7f"; 
s.match("[0-9a-z]*$"); 

显示"200bfaa1f5d6cda4c782f98b15f32e7f"