const regex = /(?={)(?(DEFINE)
(?<number> [0-9]+(?:\.[0-9]*)?(?:e[+-]?[0-9]+)?)
(?<string> \\" (?>[^"\\]+|\\\\(?:[^\\]|\\.))* \\" )
(?<boolean> true | false | null)
(?<pair> (?: \g<string> | \g<number>) \s* : \s*
(?: \g<string> | \g<number> | \g<boolean> | \g<json> | \g<array> ) )
(?<array> \[\s* \g<json> (?: \s*,\s* \g<json>)* \s*])
(?<json> { \s* \g<pair> (?:\s*,\s* \g<pair>)* })
)
\g<json>/ig;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?={)(?(DEFINE)
(?<number> [0-9]+(?:\\.[0-9]*)?(?:e[+-]?[0-9]+)?)
(?<string> \\\\" (?>[^"\\\\]+|\\\\\\\\(?:[^\\\\]|\\\\.))* \\\\" )
(?<boolean> true | false | null)
(?<pair> (?: \\g<string> | \\g<number>) \\s* : \\s*
(?: \\g<string> | \\g<number> | \\g<boolean> | \\g<json> | \\g<array> ) )
(?<array> \\[\\s* \\g<json> (?: \\s*,\\s* \\g<json>)* \\s*])
(?<json> { \\s* \\g<pair> (?:\\s*,\\s* \\g<pair>)* })
)
\\g<json>', 'ig')
const str = `"b<---------------->{\\"status\\":\\"ok\\",\\"plugin_version\\":\\"1.2.6\\",\\"post\\":{\\"id\\":7598,\\"type\\":\\"post\\",\\"slug\\":\\"honeycrisp-apple-sangria-recipe\\",\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-recipe\\\\/\\",\\"status\\":\\"publish\\",\\"title\\":\\"Honeycrisp Apple Sangria Recipe\\",\\"title_plain\\":\\"Honeycrisp Apple Sangria Recipe\\",\\"content\\":\\"<div class=\\\\\\"pin-it-btn-wrapper\\\\\\"><a href=\\\\\\"\\\\/\\\\/www.pinterest.com\\\\/pin\\\\/create\\\\/button\\\\/?url=http%3A%2F%2Fwww.bigbigbutts.com%2F2013%2F08%2Fhoneycrisp-apple-sangria-recipe%2F&media=http%3A%2F%2Fwww.bigbigbutts.com%2Fwp-content%2Fuploads%2F2013%2F08%2Fhoneycrisp-apple-sangria.jpg&description=Honeycrisp%20Apple%20Sangria%20Recipe\\\\\\" data-pin-do=\\\\\\"buttonBookmark\\\\\\" data-pin-config=\\\\\\"none\\\\\\" rel=\\\\\\"nobox\\\\\\"><\\\\/a><\\\\/div>\\",\\"raw_content\\":\\"\\",\\"excerpt\\":\\"\\",\\"date\\":\\"2013-08-24T11:18:07+00:00\\",\\"modified\\":\\"2014-04-24T09:45:00+00:00\\",\\"author\\":{\\"id\\":2,\\"slug\\":\\"gia\\",\\"name\\":\\"gia\\",\\"first_name\\":\\"gia\\",\\"last_name\\":\\"Wenner chia\\",\\"nickname\\":\\"gia\\",\\"url\\":\\"http:\\\\/\\\\/giawennerchia.com\\",\\"description\\":\\"gia Wenner chia is a writer and mom who gets paid to obsess over Pinterest and blogs for Ahalogy, a Cincinnati-based startup. She lives in her hometown of West Chester, Ohio, with her husband, two young children, and their dog.\\"},\\"attachments\\":[{\\"id\\":7599,\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria.jpg\\",\\"slug\\":\\"honeycrisp-apple-sangria\\",\\"title\\":\\"honeycrisp-apple-sangria\\",\\"description\\":\\"\\",\\"caption\\":\\"\\",\\"parent\\":7598,\\"mime_type\\":\\"image\\\\/jpeg\\",\\"images\\":{\\"full\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria.jpg\\",\\"width\\":580,\\"height\\":406},\\"thumbnail\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-150x150.jpg\\",\\"width\\":150,\\"height\\":150},\\"medium\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-300x210.jpg\\",\\"width\\":300,\\"height\\":210},\\"large\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria.jpg\\",\\"width\\":580,\\"height\\":406},\\"Mini Square\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-70x70.jpg\\",\\"width\\":70,\\"height\\":70},\\"Square\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-115x115.jpg\\",\\"width\\":115,\\"height\\":115},\\"Featured Tabs\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-150x225.jpg\\",\\"width\\":150,\\"height\\":225}}}],\\"featured_image\\":{\\"id\\":7599,\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria.jpg\\",\\"slug\\":\\"honeycrisp-apple-sangria\\",\\"title\\":\\"honeycrisp-apple-sangria\\",\\"description\\":\\"\\",\\"caption\\":\\"\\",\\"parent\\":7598,\\"mime_type\\":\\"image\\\\/jpeg\\",\\"images\\":{\\"full\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria.jpg\\",\\"width\\":580,\\"height\\":406},\\"thumbnail\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-150x150.jpg\\",\\"width\\":150,\\"height\\":150},\\"medium\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-300x210.jpg\\",\\"width\\":300,\\"height\\":210},\\"large\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria.jpg\\",\\"width\\":580,\\"height\\":406},\\"Mini Square\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-70x70.jpg\\",\\"width\\":70,\\"height\\":70},\\"Square\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-115x115.jpg\\",\\"width\\":115,\\"height\\":115},\\"Featured Tabs\\":{\\"url\\":\\"http:\\\\/\\\\/www.bigbigbutts.com\\\\/wp-content\\\\/uploads\\\\/2013\\\\/08\\\\/honeycrisp-apple-sangria-150x225.jpg\\",\\"width\\":150,\\"height\\":225}}}}}<random shit><dafkdjkfjdaksf"`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions