// 源字符串 const str1 = " abc =b\\n ;c=\\x61d;d=234;t=\\n;d=\"test;yes \";" // 考虑 Value 内包含 `\"` 或 `=` 的 const str2 = " abc =b\\n ;c=\\x61d;d=234;t=\\n;d=\"test;yes\";g=\"\";sdsd\"" // 考虑 Value 内包含空格的 const str3 = " abc =b\\n ;c=\\x61d;d=234;t=\\n;d=\"test;yes\";g=\"\" ; s dsd\"" const decode = function (str) { var res = [] str.match(/(\w+[\s]*=((\".*?\")|(.*?));)/g).map(_item=>{ let item = _item.replace(/\s+/g, '').replace(/;$/, '') // console.log(item) let K = item.split('=')[0] let V = item.split('=')[1] res[K] = V }) return res } console.log(decode(str1)) // [ abc: 'b\\n', c: '\\x61d', d: '"test;yes"', t: '\\n' ] // console.log(decode(str2)) // console.log(decode(str3))