JSFiddle - React, Tailwind, and code Playground

JavaScript

var regex = /\[(data-user="[\d-]+")\s+(data-userId="[\d-]+")\]\s*(.+?)\s*\[\/\]\s*(.*)/i;
var str = '[data-user="12345-6789" data-userId="3456-789"]John Smith[/] ...Blablabla some other text... [data-user="4567-891011" data-userId="5678-9101112"]Foo Bar[/]';
var html = str;

while (regex.test(html)) {
	html = html.replace(regex, '<span $1 $2>$3</span>$4');
}
console.log(html);