const regex = /(%([^:]+):([^%]+)%)/g;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(%([^:]+):([^%]+)%)', 'g')
const str = `<!DOCTYPE html>/
<html>
<head>
<meta http-equiv=\\"Content-Type\\" content=\\"text/html; charset=utf-8\\" />
<title>Testing the checkAndChangeToUrl-Function (Version 5)</title>
<link rel=\\"stylesheet\\" type=\\"text/css\\" href=\\"[__protocol__]://[__server__]:[__port__]/weblis-ext3/ext/resources/css/ext-all.css\\" />
<script type=\\"text/javascript\\" src=\\"[__protocol__]://[__server__]:[__port__]/weblis-ext3/ext/adapter/ext/ext-base-debug.js\\"></script>
<script type=\\"text/javascript\\" src=\\"[__protocol__]://[__server__]:[__port__]/weblis-ext3/ext/ext-all-debug.js\\"></script>
<script type=\\"text/javascript\\" src=\\"[__protocol__]://[__server__]:[__port__]/weblis-ext3/ext/locale/ext-lang-de.js\\"></script>
<script type=\\"text/javascript\\" src=\\"[__protocol__]://[__server__]:[__port__]/weblis-resources/js/jquery/jquery-3.2.1.js\\"></script>
<script type=\\"text/javascript\\">
function checkAndChangeToUrl(url, maxRetries, waitTime, waitFunc, startFunc, successFunc, errorFunc) {
console.log(\\"ENTER checkAndChangeToUrl('\\"+url+\\"', \\"+maxRetries+\\", \\"+waitTime+\\")\\");
var nRetry = 0;
var checkUrl = function () {
\$.ajax({
url: url,
context: document.body,
crossDomain: true,
error: function(jqXHR, textStatus, errorThrown) {
console.error(textStatus + \\";
\\" + errorThrown);
nRetry++;
if (nRetry <= maxRetries) {
waitFunc.call(jqXHR, jqXHR);
console.log(\\"Retry #\\" + nRetry);
var timeout = (nRetry == 0 ? 0 : waitTime);
console.log(\\"timeout = \\" + timeout);
setTimeout(checkUrl, timeout);
if (nRetry === 1) {
console.log(\\"**** Try and open the target application ****\\");
// PROBLEM: parent[.parent].handleExternalEvent() existiert nicht...
startFunc.call(jqXHR, jqXHR);
}
} else {
errorFunc.call(jqXHR, jqXHR);
}
return;
},
success : function(data, textStatus, jqXHR) {
console.log(\\"Success!\\");
successFunc.call(jqXHR, jqXHR);
}
}).done(function() {
\$( this ).addClass( \\"done\\" );
console.log(\\"Done!\\");
});
};
// Wir setzen das Ganze in Gang...
checkUrl();
}
function test_1(checkUrl, targetUrl, launchUrl) {
//var url = \\"%param:checkUrl%\\";
//var url = \\"http://localhost:8080/RechercheServlet/rest/forcont/fxLIS?DOKID=1&VID=1&OP=RECEIVE\\";
//var url = \\"http://localhost:8085/gn\\";
console.log(\\"VOR checkAndChangeToUrl('\\"+checkUrl+\\"', 2, 5000) ...\\");
var ret = checkAndChangeToUrl(checkUrl, 2, 2000, function(jqXHR) {
console.log(\\"Waiting...\\");
}, function(jqXHR) {
console.log(\\"Start application...\\");
\$.ajax({
url: %param:launchUrl%, //\\"/opusp-rest/client-action/execute/local/GIS_Launch\\",
context: document.body,
crossDomain: false, //true, -- SYNCHRONER AUFRUF - SCHWERE SÜNDE...
headers: {
'Accept' : 'application/x-java-jnlp-file', /* application/jnlp */
'Content-Description' : 'File Transfer',
'Content-Disposition' : 'attachment; filename=GIS_Launch.jnlp'
},
error: function(jqXHR, textStatus, errorThrown) {
console.error(\\"Fehler bei Aktion GIS_Launch:
\\" + textStatus + \\";
\\" + errorThrown);
return;
},
success : function(data, textStatus, jqXHR) {
console.log(\\"GIS_Launch: Success! JNLP = '\\" + data + \\"'\\");
}
}).done(function() {
\$( this ).addClass( \\"done\\" );
console.log(\\"GIS_Launch: Done!\\");
});
}, function(jqXHR) {
console.log(\\"Success.\\");
window.location.href = targetUrl;
}, function(jqXHR) {
console.log(\\"Error: \\" + jqXHR.statusText + \\", jqXHR.state() = \\" + jqXHR.state());
});
console.log(\\"LEAVE test_1.\\");
}
function performTest_1() {
test_1(
\\"[__checkUrl__]\\", // Parameter: checkUrl, z.B. \\"http://localhost:8080/RechercheServlet\\"
\\"%param:targetUrl%\\", // Parameter: targetUrl, z.B. \\"http://localhost:8080/RechercheServlet/rest/forcont/fxLIS?DOKID=1&VID=1&OP=RECEIVE\\"
\\"[__launchUrl__]\\" // Parameter: launchUrl, z.B. \\"/opusp-rest/client-action/execute/local/GIS_Launch\\"
)
}
\$.when(\$.ready).then(function() {
performTest_1();
});
</script>
</head>
<body>
<a id=\\"test_1\\" onclick=\\"performTest_1();\\"><button type=\\"button\\">Perform Test #1</button></a>
</body>
</html>
`;
// 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