regexp查找引号之间的所有值

时间:2017-04-20 03:52:09

标签: javascript regex

我想将引号内的所有字符串值都推送到数组中。

Database = {
  "English": "forget password",
  "zh-CN": "忘记密码",
}

输出应该是

extractedStrings = ["English", "forget password", "zh-CN", "忘记密码"]

4 个答案:

答案 0 :(得分:4)

使用Object.entriesArray.prototype.concat,如下所示

var extractedStrings = [].concat(...Object.entries(Database));

对于Internet Exploder和Opera,Object.entries

需要Polyfill

答案 1 :(得分:1)

我猜你应该遍历对象的键并将键和值推送到数组中。比使用 Object.entries 和扩展语法更兼容。



var database = { "English": "forget password", "zh-CN": "忘记密码", }

var keyValues = Object.keys(database).reduce(function(acc, key) {
  acc.push(key, database[key]);
  return acc;
}, [])

console.log(keyValues)




您还可以使用正则表达式版本来匹配任何不属于JSON语法的字符。以下是一个有点天真的实现,我认为以上是更好的:



var database = { "English": "forget password", "zh-CN": "忘记密码", }

console.log(JSON.stringify(database).match(/[^\":{},]+/g))




答案 2 :(得分:1)

var obj = { "English": "forget password", "zh-CN": "忘记密码",};
var arr=[];
for(var p in obj){
  arr.push(p);
  arr.push(obj[p]);
}
console.info(arr);

你可以试试这个。

答案 3 :(得分:0)



Database = {
  "English": "forget password",
  "zh-CN": "忘记密码",
  "other-language": "embedded \"quotes\""
}


a = JSON.stringify(Database);
words = a.match(/"(.*?)"/g);

console.log(words);