const regex = new RegExp('^http://127\\.0\\.0\\.1:5000/countries(?:\\?\\w+=[\\s\\w]+(?:&\\w+=[\\s\\w]+)*)?$', 'gm')
const str = `http://127.0.0.1:5000/x
http://127.0.0.1:5000/countries?
http://127.0.0.1:5000/countries?x
http://127.0.0.1:5000/countries?=
http://127.0.0.1:5000/countries?x=
http://127.0.0.1:5000/countries&
http://127.0.0.1:5000/countries&x
http://127.0.0.1:5000/countries&=
http://127.0.0.1:5000/countries&x=
http://127.0.0.1:5000/countries&x=x
http://127.0.0.1:5000/countries?code=AU?
http://127.0.0.1:5000/countries?name=Australia?x
http://127.0.0.1:5000/countries?name=Australia?=
http://127.0.0.1:5000/countries?name=Australia?x=
http://127.0.0.1:5000/countries?name=Australia?x=x
http://127.0.0.1:5000/countries?name=Australia&
http://127.0.0.1:5000/countries?name=Australia&x
http://127.0.0.1:5000/countries?name=Australia&=
http://127.0.0.1:5000/countries?name=Australia&x=
http://127.0.0.1:5000/countries
http://127.0.0.1:5000/countries?name=Australia
http://127.0.0.1:5000/countries?code=AU&name=Australia
http://127.0.0.1:5000/countries?name=New Zealand&calling_code=64
http://127.0.0.1:5000/countries?code=AU&name=Australia&capital=Canberra`;
// 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