JavaScript中不使用eval如何提取字符串内包裹的数组
方法1:JSON.parse 转换(最简洁)
你的字符串结构和JSON格式只有引号类型的差异,JSON要求字符串用双引号包裹,所以只要把所有单引号替换成双引号,就可以直接用JSON.parse解析:
const mystring = "['str1','str2']"; const arr = JSON.parse(mystring.replaceAll("'", '"')); // 输出:['str1', 'str2']
这个方法的优势是可以自动识别数组里的非字符串类型,比如如果你的数组是"[1, true, 'str']",解析后也能拿到对应类型的元素,不需要额外转换。
注意:如果你的数组元素本身包含单引号、双引号,需要先处理转义逻辑再用这个方法。
方法2:正则匹配提取
如果数组元素可能有引号嵌套不想做转义处理,可以直接用正则匹配所有单引号包裹的内容:
const mystring = "['str1','str2', 'test\'content']"; const arr = mystring.match(/(?<=')[^'\\]*(?:\\.[^'\\]*)*(?=')/g); // 输出:['str1', 'str2', "test'content"]
这个正则会自动忽略转义的单引号,适合元素内容更复杂的场景。
内容的提问来源于stack exchange,提问作者boredbear153
相关产品推荐
相关产品推荐

