0

我有一个看起来像这样的字符串:

var str = "fname=peter lname=pan age=12"

我需要的是获取一个字符串数组,每个字符串都在 fname 或 lname 或 age 之后,超出str变量。结果是这样的:['peter', 'pan', '12']

你能建议我一个有效的解决方案来完成这项任务吗(我有一个很长的,相信我你永远不想看到那个)?

谢谢!

4

3 回答 3

2

尝试:

var arr = [];
str.replace(/=(\w+)/g, function( a,b ) {
  arr.push( b );
});

console.log( arr ); //=> ["peter", "pan", "12"]

这是使用类似正则表达式的另一种方法:

var arr = str.match(/=\w+/g).map(function( m ){
  return m.replace('=','');
});
于 2012-12-18T03:15:05.630 回答
1

你不需要一个regex.

var str = "fname=peter lname=pan age=12";

str = str.split(' ');
for(var i = 0, length = str.length; i < length; i++) {
    str[i] = str[i].split('=')[1];
}
console.log(str); // ['peter', 'pan', '12']

演示

于 2012-12-18T03:09:44.890 回答
0

您还可以考虑对密钥进行硬编码以避免循环:

var s   = "fname=peter lname=pan age=12"
var pat = /fname=(\w+)\s*lname=(\w+)\s*age=(\w+)/

r.match(pat)
//returns ["fname=peter lname=pan age=12", "peter", "pan", "12"]
于 2012-12-18T03:41:23.737 回答