这是我的回复字符串
var resp =" atoken ##Wed Oct 02 03:24:09 PDT 2013 AUTHTOKEN = 1a26625dfcc94fb07eacd4a77c7595ee RESULT = TRUE";
我希望按AUTHTOKEN
的键获取值。
答案 0 :(得分:2)
使用正则表达式
resp.match(/.* (AUTHTOKEN=(.*)) .*/);
var authToken= RegExp.$2;
虽然我的比赛有点矫枉过正
编辑 JS中的Regexp说明
上面的正则表达式使用组(由parens标识)。在匹配上执行正则表达式时,RegExp类将保留上次执行的组。第1组,第2组等
在上述情况下,表达式将生成以下组
第1组:AUTHTOKEN = 1a26625dfcc94fb07eacd4a77c7595ee 第2组:1a26625dfcc94fb07eacd4a77c7595ee
假设我可以使用表达式
/.* AUTHTOKEN=(.*) .*/
哪会把执行的匹配放在RegExp。$ 1
中This article将为您提供有关JavaScript和正则表达式的更多信息。
答案 1 :(得分:1)
这个不使用正则表达式,它使用Array.every方法。
var resp = "atoken # #Wed Oct 02 03:24:09 PDT 2013 AUTHTOKEN=1a26625dfcc94fb07eacd4a77c7595ee RESULT=TRUE", token;
resp.split(" ").every(function(currentValue) {
var pair = currentValue.split("=");
if (pair.length === 2) {
if (pair[0] === "AUTHTOKEN") {
token = pair[1];
return false;
}
}
return true;
});
console.log(token);
<强>输出强>
1a26625dfcc94fb07eacd4a77c7595ee
修改强>
对于这种情况,在我的机器上,RegEx解决方案表现良好。 http://jsperf.com/search-in-key-value-pairs