const regex = /(?=^[^1]*(?:1,1,1,1,1|1(?:(?:\D+[^1]){9}\D+1){4})[^1]*$)(?=^[^2]*(?:2,2,2,2|2(?:(?:\D+[^2]){9}\D+2){3})[^2]*$)(?=^[^3]*(?:3,3,3|3(?:(?:\D+[^3]){9}\D+3){2})[^3]*$)(?=^[^4]*(?:4,4,4|4(?:(?:\D+[^4]){9}\D+4){2})[^4]*$)(?=^[^5]*(?:5,5|5(?:\D+[^5]){9}\D+5)[^5]*$)(?:(?:^\[|)\[[0-5](?:,[0-5]){9}\](?:,|\]$)){10}/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?=^[^1]*(?:1,1,1,1,1|1(?:(?:\\D+[^1]){9}\\D+1){4})[^1]*$)(?=^[^2]*(?:2,2,2,2|2(?:(?:\\D+[^2]){9}\\D+2){3})[^2]*$)(?=^[^3]*(?:3,3,3|3(?:(?:\\D+[^3]){9}\\D+3){2})[^3]*$)(?=^[^4]*(?:4,4,4|4(?:(?:\\D+[^4]){9}\\D+4){2})[^4]*$)(?=^[^5]*(?:5,5|5(?:\\D+[^5]){9}\\D+5)[^5]*$)(?:(?:^\\[|)\\[[0-5](?:,[0-5]){9}\\](?:,|\\]$)){10}', 'g')
const str = `[[0,1,0,0,0,0,0,0,0,0],[0,1,0,0,2,2,2,2,0,0],[0,1,0,0,0,0,0,0,0,0],[0,1,0,0,0,0,0,0,0,0],[0,1,3,0,0,0,0,0,0,0],[0,0,3,0,0,0,0,0,0,0],[0,0,3,0,0,0,0,0,0,0],[0,0,5,5,0,0,4,0,0,0],[0,0,0,0,0,0,4,0,0,0],[0,0,0,0,0,0,4,0,0,0]]`;
// 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