const regex = /(?:having\s*?[^\s]+\s*?[^\w\s])/gi;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?:having\\s*?[^\\s]+\\s*?[^\\w\\s])', 'gi')
const str = `=== libinjection tests ===
1 I like having true friends
I like having true friends
I having true friends
I was having true friends
1 having
Family and friends having meal outdoors
=== FP ===
1 I like having true, friends
1 having test, test
Family and friends having meal, outdoors
having test , test
having test test,
=== SQL ===
8' GROUP BY ID_ARTICLE HAVING COUNT(ID_ARTICLE) = '2'
8' GROUP BY ID_ARTICLE HAVING 1 = 1
8' GROUP BY ID_ARTICLE HAVING 1,
8' GROUP BY ID_ARTICLE HAVING true,
FROM Sales.SalesOrderDetail GROUP BY SalesOrderID HAVING SalesOrderID > 50000
-3223%'))) OR 1 GROUP BY CONCAT(0x716a787a71,(SELECT (CASE WHEN (3900=3900) THEN 1 ELSE 0 END)),0x7171627671,FLOOR(RAND(0)*2)) HAVING MIN(0)#"
-2906%' OR 1 GROUP BY CONCAT(0x716a787a71,(SELECT (CASE WHEN (3900=3900) THEN 1 ELSE 0 END)),0x7171627671,FLOOR(RAND(0)*2)) HAVING MIN(0)#"
-2836%00' OR 1 GROUP BY CONCAT(0x716a787a71,(SELECT (CASE WHEN (3900=3900) THEN 1 ELSE 0 END)),0x7171627671,FLOOR(RAND(0)*2)) HAVING MIN(0)#"
-8115 OR 1 GROUP BY CONCAT(0x716a787a71,(SELECT (CASE WHEN (3900=3900) THEN 1 ELSE 0 END)),0x7171627671,FLOOR(RAND(0)*2)) HAVING MIN(0)#"
-2949 OR 1 GROUP BY CONCAT(0x716a787a71,(SELECT (CASE WHEN (3900=3900) THEN 1 ELSE 0 END)),0x7171627671,FLOOR(RAND(0)*2)) HAVING MIN(0)#"
-4609) WHERE 5091=5091 OR 1 GROUP BY CONCAT(0x716a787a71,(SELECT (CASE WHEN (3900=3900) THEN 1 ELSE 0 END)),0x7171627671,FLOOR(RAND(0)*2)) HAVING MIN(0)#"
1 having 1=1
1 having 1
1 having 1=1
1 having id=id
I am having trouble -.-
`;
// 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