const regex = new RegExp('^/foo/bar/+(?:(?:find|count)/*$(*SKIP)(*FAIL)|([^/\\r\\n\\t]+))/*$', 'mgu')
const str = `--------------------must NOT get as id (reseved key words)
/foo/bar/count
/foo/bar/find
--------------------must NOT get as id (not present)
/foo/bar/
--------------------must NOT get as id (not present tab test)
/foo/bar/
--------------------must NOT get as id (not present line break test)
/foo/bar/
--------------------must NOT get as id (not present tab, line break, multiple slashes test)
/foo/bar// /
/
//
--------------------must get as id
/foo/bar/1
/foo/bar/1c
/foo/bar/c1
/foo/bar/sku
/foo/bar/countfind
/foo/bar/findcount
/foo/bar/skucount
/foo/bar/skufind
/foo/bar/countsku
/foo/bar/findsku
/foo/bar/coun
/foo/bar/fin
/foo/bar/ount
/foo/bar/ind
/foo/bar/skucoun
/foo/bar/skufin
/foo/bar/finsku
/foo/bar/counsku
--------------------must get as id (unnecessary slash test)
/foo/bar/1/
/foo/bar/1c/
/foo/bar/c1/
/foo/bar/sku/
/foo/bar/countfind/
/foo/bar/findcount/
/foo/bar/skucount/
/foo/bar/skufind/
/foo/bar/countsku/
/foo/bar/findsku/
/foo/bar/coun/
/foo/bar/fin/
/foo/bar/ount/
/foo/bar/ind/
/foo/bar/skucoun/
/foo/bar/skufin/
/foo/bar/finsku/
/foo/bar/counsku/
--------------------must get as id (unnecessary|invalid slashed test)
/foo/bar///1///
/foo/bar///1c///
/foo/bar///c1///
/foo/bar///sku///
/foo/bar///countfind///
/foo/bar///findcount///
/foo/bar///skucount///
/foo/bar///skufind///
/foo/bar///countsku///
/foo/bar///findsku///
/foo/bar///coun///
/foo/bar///fin///
/foo/bar///ount///
/foo/bar///ind///
/foo/bar///skucoun///
/foo/bar///skufin///
/foo/bar///finsku///
/foo/bar///counsku///`;
// 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