const regex = /((\*|((((count|max|sum|min|avg|version|database|user|round|ceil|floor|truncate|mod)\((\*|\w+|\s*)\)\s?,?\s?)|(\w+(.\w+\s+,\s+))){1,}));?)/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('((\\*|((((count|max|sum|min|avg|version|database|user|round|ceil|floor|truncate|mod)\\((\\*|\\w+|\\s*)\\)\\s?,?\\s?)|(\\w+(.\\w+\\s+,\\s+))){1,}));?)', 'gm')
const str = `table4.id , table5.name , table6.name , table7.name , table8.name , table9.name , ddd
((\\s?\\w+(\\.\\w+)?\\s?\\,\\s?)*)
select count(*) , max(table4.id) from table4,table5 left join tab2 on tab1.size = tab2.size , right join tab2 on tab1.size = tab2.size where id <> 1 having dd group by dd order by dd desc dd - 2 > 3;
select user();
select * from user where id = (select * from dd where id = 1);
select count(vdvdvdvfd) from table4,table5 where table4.id=table5.id;
select tt.dd from table4,table5 where table4.id=table5.id;
count(vdvdvdvfd) , max(fdvd) , sum(fdvd) , min(fdvd) , avg(fdvd) , version() ,
table , count(ff) , table
((\\*|((((count|max|sum|min|avg|version|database|user|round|ceil|floor|truncate|mod)\\((\\*|\\w+|\\s*)\\)\\s?,?\\s?)|(\\w+(.\\w+\\s+,\\s+))){1,}));?)
((((count|max|sum|min|avg|version|database|user)\\((\\*|\\w+|\\s*)\\)\\s?,?\\s?){1,});?)
((\\*|(((count|max|sum|min|avg|version|database|user|round|ceil|floor|truncate|mod)\\((\\*|\\w+|\\s*)\\)\\s?,?\\s?){1,}));?)
select\\s+(\\*|((\\w+(\\.\\w+)?)+(\\s?,\\s?\\w+(\\.\\w+)?)*)|((\\w+\\([^\\s]|(\\w+\\.\\w+)?\\))(\\s+\\,\\s+)?)+)\\s+from\\s+(\\w+(\\s?,\\s?\\w+)*\\;?)(\\s+((\\w+\\s+join)\\s+(\\w+(\\.\\w)?\\s+on\\s+(\\w+(\\.\\w+)?\\s+=\\s+\\w+(\\.\\w+)?)?)(\\s+,\\s+)?)+)?(\\s+((limit\\s+(\\w+)?\\s?(\\,\\w+\\;)?)|((where)?\\s+?([^\\;]+\\s?;))))?
select\\s+(\\*|((\\w+(\\.\\w+)?)+(\\s?,\\s?\\w+(\\.\\w+)?)*)|((\\w+\\([^\\s]|(\\w+\\.\\w+)?\\))(\\s+\\,\\s+)?)+)\\s+from\\s+(\\w+(\\s?,\\s?\\w+)*\\;?)(\\s+((\\w+\\s+join)\\s+(\\w+(\\.\\w)?\\s+on\\s+(\\w+(\\.\\w+)?\\s+=\\s+\\w+(\\.\\w+)?)?)(\\s+,\\s+)?)+)?(\\s+((limit\\s+(\\w+)?\\s?(\\,\\w+\\;)?)|((where)?\\s+?([^\\;]+\\s?;))))?
select\\s+((\\*|(((count|max|sum|min|avg|version|database|user|round|ceil|floor|truncate|mod)\\((\\*|\\w+|\\s*)\\)\\s?,?\\s?){1,}));?)\\s+from\\s+(\\w+(\\s?,\\s?\\w+)*\\;?)(\\s+((\\w+\\s+join)\\s+(\\w+(\\.\\w)?\\s+on\\s+(\\w+(\\.\\w+)?\\s+=\\s+\\w+(\\.\\w+)?)?)(\\s+,\\s+)?)+)?(\\s+((limit\\s+(\\w+)?\\s?(\\,\\w+\\;)?)|((where)?\\s+?([^\\;]+\\s?;))))?
`;
// 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