JSFiddle - React, Tailwind, and code Playground

HTML

<div id="results"></div>

CSS

#results {
    font-family: mono;
}

JavaScript

var test1 = "nestedObj['My key has spaces']";
var test2 = "abc [\"def ghi\" ].jkl[123][ 'mn o']";

function getKeys(str) {
    // Regular expression for the first key in theKey
    var reg = [
        /^\s*\[\s*(\d+)\s*\]/,         // Case 1: [ someIntegerKey ]
        /^\s*\[\s*\'([^\']+)\'\s*\]/,  // Case 2: [ 'someKey' ]
        /^\s*\[\s*\"([^\']+)\"\s*\]/,  // Case 3: [ "someKey" ]
        /^\s*\.\s*([^\[\.]+)/          // Case 4: . someKey
    ];
    
    var keys = [];
    var tail = "." + str;
    var success = true;
    while (success) {
        var result = 
            tail.match(reg[0]) || 
            tail.match(reg[1]) ||
            tail.match(reg[2]) || 
            tail.match(reg[3]);
        
        if (result) {
            keys.push(result[1]);
            tail = tail.slice(result[0].length);
        } else {
            success = false;
        }
    }
    return keys;
}

console.log(getKeys(test1));
console.log(getKeys(test2));
document.getElementById("results").innerText = "Output: \n[" + getKeys(test1) + "]\n[" + getKeys(test2) + "]";