{"id":703,"date":"2023-03-03T04:31:10","date_gmt":"2023-03-03T04:31:10","guid":{"rendered":"https:\/\/www.toolkit.keywordfinder.us\/?page_id=703"},"modified":"2023-03-03T04:31:10","modified_gmt":"2023-03-03T04:31:10","slug":"regex-tester-and-debugger-tool","status":"publish","type":"page","link":"https:\/\/tools.billionsideas.com\/hi\/regex-tester-and-debugger-tool\/","title":{"rendered":"Regex Tester and Debugger Tool"},"content":{"rendered":"<style>\nsection{\n         margin-top:60px;\n        width: 100%;\n        max-width: 970px;\n        background-color: #fff;\n        border: 1px solid #ddd;\n        padding: 25px;\n      }\n<\/style>\n\n\n<script type=\"text\/javascript\" src=\"https:\/\/js.site24x7static.com\/js\/s247tm.min.js?p=Feb_13_2023\"><\/script>\n\n\n\n<script type=\"text\/javascript\" src=\"\/\/js-wc.site24x7static.com\/site24x7\/client\/fp\/js\/jquery.min-dc5e7f18c8.js\"><\/script>\n\n\n<script type=\"text\/javascript\" src=\"https:\/\/accounts.zoho.com\/u\/info\"><\/script><script type=\"text\/javascript\">let imagesUrl = '\/\/img-wc.site24x7static.com\/site24x7\/client\/5983414\/images\/';<\/script><!-- RUM Script for testing\n<script type=\"text\/javascript\">(function(w,d,s,r,k,h,m){\nif(w.performance && w.performance.timing && w.performance.navigation) {\nw[r] = w[r] || function(){(w[r].q = w[r].q || []).push(arguments)};\nh=d.createElement('script');h.async=true;h.setAttribute('src',s+k);\nd.getElementsByTagName('head')[0].appendChild(h);\n(m = window.onerror),(window.onerror = function (b, c, d, f, g) {\nm && m(b, c, d, f, g),g || (g = new Error(b)),(w[r].q = w[r].q || []).push([\"captureException\",g]);})\n}\n})(window,document,'https:\/\/col.localsite24x7.com\/rum\/resources\/beacon\/site24x7rum-min.js?appKey=','s247r','7ccfadf1959380f648dce532206d773b');<\/script>-->\n<!-- RUM script starts -->\n<script type=\"text\/javascript\">(function(w,d,s,r,k,h,m){\nif(w.performance && w.performance.timing && w.performance.navigation) {\nw[r] = w[r] || function(){(w[r].q = w[r].q || []).push(arguments)};\nh=d.createElement('script');h.async=true;h.setAttribute('src',s+k);\nd.getElementsByTagName('head')[0].appendChild(h);\n(m = window.onerror),(window.onerror = function (b, c, d, f, g) {\nm && m(b, c, d, f, g),g || (g = new Error(b)),(w[r].q = w[r].q || []).push([\"captureException\",g]);})\n}\n})(window,document,'\/\/static.site24x7rum.eu\/beacon\/site24x7rum-min.js?appKey=','s247r','b857c13c701cc8514a1835dcda9f5879');<\/script><!--  RUM script ends-->\n<!-- Spotlight script starts-->\n<script type=\"text\/javascript\">\/\/ use this for local testing\n\/\/ (function(id){var d=document;var w=window;w.$zoho=w.$zoho||{};var z=$zoho;var u=z.spotlight=z.spotlight||{};u.app_id=id;u.q=[];var p={\"customer\":[\"delete\",\"increment\",\"property\",\"set\",\"append\"],\"company\":[\"delete\",\"increment\",\"append\",\"property\",\"set\"],\"track\":[],\"identify\":[],\"logout\":[]};function s(a,b,c){a[b]=function(){var o={};o[c]=arguments;u.q.push(o)}}for(var o in p){s(u,o,o);var a=p[o];for(var i=0;i<a.length;i++){s(u[o],a[i],o+\".\"+a[i])}} if (window.addEventListener) window.addEventListener(\"load\", loadScript, false); else if (window.attachEvent) window.attachEvent(\"onload\", loadScript); function loadScript() {var e=d.createElement(\"script\");e.type=\"text\/javascript\";e.src=\"https:\/\/spotlight.localzoho.com\/track\";e.id=\"zslscript\";var t=d.getElementsByTagName(\"script\")[0];t.parentNode.insertBefore(e,t)}})(\"mciypDUYl5%2Fi%2BoB5WaIkVA%3D%3D\")\n\/*(function(id){var d=document;var w=window;w.$zoho=w.$zoho||{};var z=$zoho;var u=z.spotlight=z.spotlight||{};u.app_id=id;u.q=[];var p={\"customer\":[\"delete\",\"increment\",\"property\",\"set\",\"append\"],\"company\":[\"delete\",\"increment\",\"append\",\"property\",\"set\"],\"track\":[],\"identify\":[],\"logout\":[]};function s(a,b,c){a[b]=function(){var o={};o[c]=arguments;u.q.push(o)}}for(var o in p){s(u,o,o);var a=p[o];for(var i=0;i<a.length;i++){s(u[o],a[i],o+\".\"+a[i])}}var e=d.createElement(\"script\");e.type=\"text\/javascript\";e.src=\"https:\/\/scripts.zohospotlight.com\/track\";e.id=\"zslscript\";var t=d.getElementsByTagName(\"script\")[0];t.parentNode.insertBefore(e,t)})(\"%2B%2FKTH9HSyCHMtzS%2BUNGgwQ%3D%3D\")\nvar customer = {\nid : '123e4567-e89b-12d3-a456-426614174000',\nname: 'site24x7-tools-tracker',\nemail:'site24x7-tools-spotlight@zohocorp.com'\n};\n$zoho.spotlight.identify(customer.id,customer);\n\/*   if(!localStorage.hasOwnProperty(\"user_id\")){\nlet uuid = CreateUUID();\nlocalStorage.setItem(\"user_id\",uuid);\n}\nif (localStorage.hasOwnProperty(\"user_id\")) {\nuser_id = localStorage.getItem(\"user_id\")\n$zoho.spotlight.identify(user_id);\n}\nfunction CreateUUID() {\nreturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\/[xy]\/g, function(c) {\nvar r = Math.random() * 16 | 0, v = c == 'x' ? r : (r &#038; 0x3 | 0x8);\nreturn v.toString(16);\n});\n}--> close comment for localStorage once uncommented\/*\n*\/\nfunction track(trend){\n\/\/var delayInMilliseconds = 1000;\nvar url =  $('#request-demo').attr('href');\nvar toolName = document.title;\nevent.preventDefault();\n\/*\n$zoho.spotlight.track('Tools Request Demo Links',{ description:toolName + ' - ' + trend + ' clicked'});\nsetTimeout(function() {\nredirect(url);\n},delayInMilliseconds);\n*\/\n\/* Custom attributes in RUM for tools demo links *\/\nif(window.s247r ){\ns247r(\"Tools Demo links\",toolName);\ns247r(\"Tools Demo links Count\", 1);\ns247r(\"flush_metrics\");\n}\nredirect(url);\n}<\/script><!-- Spotlight script ends -->\n<!-- TemplateBeginEditable name=\"head\" -->\n<!-- TemplateEndEditable -->\n<script>var iamZuid = parseInt();\nvar page_uri = '\\x2Ftools\\x2Fregex\\x2Dparser.html';  \nvar toolsV2 = true;\nvar languageCode = 'en';<\/script>\n\n\n\n<script type=\"text\/javascript\" src=\"\/\/js-wc.site24x7static.com\/site24x7\/client\/fp\/js\/tools-cd08abafdd.js\"><\/script>\n<section><h1>Regex Tester and Debugger Tool<\/h1>\n<div id=\"temp-body\">\n<div class=\"container\"><div class=\"row\"><div class=\"col-md-12\"><div class=\"title-content\">\n<p>Free tool which validates the given input string against the given regular expression and matches the output in accordance with the defined Regex.<\/p>\n<p>The tool supports parsing and debugging in Javascript, Python and PHP languages<\/p><\/div><\/div><\/div><\/div>\n<div class=\"container\"><div class=\"row\"><div class=\"col-md-12\"><div class=\"editor-wrapper\"><div class=\"btn-wrapper\"><input type=\"radio\" name=\"language\" id=\"lang1\" class=\"tabs\"><label for=\"lang1\" class=\"languageclass line-btn active radioBox\">JavaScript<\/label>\n<input type=\"radio\" name=\"language\" id=\"lang2\" class=\"tabs\"><label for=\"lang2\" class=\"languageclass line-btn\">PHP<\/label>\n<input type=\"radio\" name=\"language\" id=\"lang3\" class=\"tabs\"><label for=\"lang3\" class=\"languageclass line-btn radioBox\">Python<\/label><br><\/div><div class=\"regex-result-wrap pb-3\"><div id=\"lang-1\" class=\"mt-4 langtab\"><div class=\"row\"><div class=\"col-md-6\"><div class=\"form-group\"><label>Input RegEx pattern:<\/label>\n<textarea type=\"value\" id=\"rgxjs\" class=\"rgx form-control\" onfocus=\"fcolor(this)\"><\/textarea><\/div><div class=\"radio-wrapper form-group d-flex flex-wrap\"><label> Modifier:<\/label>\n<div class=\"radio-btn ml-1\"><input class=\"flagCheckboxjs\" type=\"checkbox\" value=\"g\" id=\"gflag\" checked=\"\"><label for=\"gflag\" class=\"ml-1\">\nGlobal(g)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxjs\" type=\"checkbox\" value=\"i\" id=\"iflag\"><label for=\"iflag\" class=\"ml-1\">\nCase Insensitive(i)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxjs\" type=\"checkbox\" value=\"m\" id=\"mflag\"><label for=\"mflag\" class=\"ml-1\">\nmultiline(m)\n<\/label><\/div><\/div><div class=\"form-group\"><label>Input String :<\/label>\n<textarea type=\"value\" id=\"strjs\" class=\"outbox min-height-textarea form-control\" onfocus=\"fcolor(this)\"><\/textarea><\/div><div class=\"btn-wrapper\"><button id=\"convert\" class=\"fill-btn\" onclick=\"matcher_javascript()\">\nMatch\n<\/button><\/div><\/div><div class=\"col-md-6\"><div class=\"form-group mt-4 mt-sm-0\"><label>Matched Info:<\/label>\n<textarea type=\"value\" id=\"objjs\" class=\"outbox obj form-control right-textarea\"><\/textarea><\/div><div class=\"form-group\"><label>Matched String:<\/label>\n<div class=\"outs form-control  right-textarea\" id=\"outjs\"><\/div><\/div><\/div><\/div><\/div><div id=\"lang-2\" class=\"mt-4 langtab\"><div class=\"row\"><div class=\"col-md-6\"><div class=\"form-group\"><label>Input RegEx pattern:<\/label>\n<textarea id=\"rgxphp\" class=\"rgx form-control\" onfocus=\"fcolor(this)\"><\/textarea><\/div><div class=\"radio-wrapper form-group d-flex flex-wrap\"><label>Modifier:<\/label>\n<div class=\"radio-btn ml-2\"><input class=\"flagCheckboxphp\" type=\"checkbox\" value=\"g\" id=\"gflag\" checked=\"\"><label for=\"gflag\">\nGlobal(g)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxphp\" type=\"checkbox\" value=\"u\" id=\"uflag\"><label for=\"uflag\">\nUnicode(u)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxphp\" type=\"checkbox\" value=\"m\" id=\"mflag\"><label for=\"mflag\">\nmultiline(m)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxesphp\" type=\"checkbox\" value=\"U\" id=\"Uflagphp\"><label for=\"Uflag\">\nUngreedy(U)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxphp\" type=\"checkbox\" value=\"i\" id=\"iflag\"><label for=\"iflag\">\nCase Insensitive(i)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxesphp\" type=\"checkbox\" value=\"D\" id=\"Dflag\"><label for=\"Dflag\">\nDollar end only(D)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxesphp\" type=\"checkbox\" value=\"x\" id=\"xflagphp\"><label for=\"xflag\">\nIgnore spaces(x)\n<\/label><\/div><\/div><div class=\"form-group\"><label> Input String :<\/label>\n<textarea type=\"value\" id=\"strphp\" class=\"outbox min-height-textarea form-control\" onfocus=\"fcolor(this)\"><\/textarea><\/div><div class=\"btn-wrapper\"><button id=\"convert\" class=\"fill-btn\" onclick=\"matcher_php()\">\nMatch\n<\/button><\/div><\/div><div class=\"col-md-6\"><div class=\"form-group mt-4 mt-sm-0\"><label> Matched Info:<\/label>\n<textarea type=\"value\" id=\"objphp\" class=\"outbox obj form-control right-textarea extra-height\"><\/textarea><\/div><div class=\"form-group\"><label>Matched String:<\/label>\n<div class=\"outs form-control right-textarea extra-height\" id=\"outphp\"><\/div><\/div><\/div><\/div><\/div><div id=\"lang-3\" class=\"mt-4 langtab\"><div class=\"row\"><div class=\"col-md-6\"><div class=\"form-group\"><label>Input RegEx pattern:<\/label>\n<textarea class=\"rgx form-control\" type=\"value\" id=\"rgxpy\" onfocus=\"fcolor(this)\"><\/textarea><\/div><div class=\"radio-wrapper form-group d-flex flex-wrap\"><label>Modifier:<\/label>\n<div class=\"radio-btn ml-2\"><input class=\"flagCheckboxpy\" type=\"checkbox\" value=\"g\" id=\"gflag\" checked=\"\"><label for=\"gflag\">\nGlobal(g)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxpy\" type=\"checkbox\" value=\"i\" id=\"iflag\"><label for=\"iflag\">\nCase Insensitive(i)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxpy\" type=\"checkbox\" value=\"m\" id=\"mflag\"><label for=\"mflag\">\nmultiline(m)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxpy\" type=\"checkbox\" value=\"u\" id=\"uflag\"><label for=\"uflag\">\nUnicode(u)\n<\/label><\/div><div class=\"radio-btn ml-2\"><input class=\"flagCheckboxpy\" type=\"checkbox\" value=\"s\" id=\"sflag\"><label for=\"sflag\">\nDot All(s)\n<\/label><\/div><\/div><div class=\"form-group\"><label>Input String :<\/label>\n<textarea type=\"value\" id=\"strpy\" class=\"outbox min-height-textarea form-control\" onfocus=\"fcolor(this)\"><\/textarea><\/div><div class=\"btn-wrapper\"><button id=\"convert\" class=\"fill-btn\" onclick=\"matcher_python()\">\nMatch\n<\/button><\/div><\/div><div class=\"col-md-6\"><div class=\"form-group mt-4 mt-sm-0\"><label>Matched Info:<\/label>\n<textarea type=\"value\" id=\"objpy\" class=\"outbox objpy form-control right-textarea low-height\"><\/textarea><\/div><div class=\"form-group\"><label>Groups Matched:<\/label>\n<textarea type=\"value\" id=\"group\" class=\"outbox form-control right-textarea low-height\"><\/textarea><\/div><div class=\"form-group\"><label>Matched String:<\/label>\n<div class=\"outspy  form-control right-textarea low-height\" id=\"outpy\"><\/div><\/div><div style=\"margin-top:5px;\"><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section>\n\n<script type=\"text\/javascript\" src=\"https:\/\/js.site24x7static.com\/js\/site24x7.js?p=Feb_10_2023\"><\/script><script type=\"text\/javascript\" src=\"https:\/\/js.site24x7static.com\/js\/popper.min.js?p=Feb_10_2023\"><\/script><script type=\"text\/javascript\" src=\"https:\/\/js.site24x7static.com\/js\/bootstrap4.min.js?p=Feb_10_2023\"><\/script><!-- TemplateEndRepeat -->\n<script type=\"text\/javascript\">var $zoho = $zoho || {};\n$zoho.salesiq = $zoho.salesiq || {};\n$zoho.salesiq.ready=function(embedinfo){$zoho.salesiq.floatbutton.visible(\"hide\");}<\/script><script>$('ul.footer-links li a').click(function(e) \n{ \n\/*  var delayInMilliseconds = 1000;\ne.preventDefault();\ntrackspotlight(toolName);\nsetTimeout(function() {\n},delayInMilliseconds); *\/\n\/* Custom attributes in RUM for tools footer links *\/\nvar url = $(this).attr('href');\nvar toolName = $(this).prop('textContent');\nif(window.s247r ){\ns247r(\"Tools footer links\",toolName);\ns247r(\"Tools footer links count\", 1);\ns247r(\"flush_metrics\");\n}\nredirect(url);\n});\nfunction redirect(url){\nif(url.includes(\"schedule-demo.html\")){\nwindow.open(url,\"_blank\");\n}else{\nlocation.href = url;\n}\n}\n\/*function trackspotlight(toolName){\nif(toolName == \"Learn More\"){\ntoolName = \"AWS Promo\";\n}\n$zoho.spotlight.track('Tools Footer Links  ',{ description:toolName + ' footer link clicked'});\n}*\/<\/script><script type=\"text\/javascript\">$(function () {\n$('.fill-btn').on('click',function(){\nvar toolName = document.title;\n\/\/  var btntext = $(this).prop('textContent');\n\/\/  btntext = btntext.trim();\n\/* Custom attributes in RUM for tools test links *\/\nif(window.s247r ){\ns247r(\"Tools Test links\",toolName);\ns247r(\"Tools Test links count\", 1);\ns247r(\"flush_metrics\");\n}\n\/\/ $zoho.spotlight.track('Tools Test Links',{ description:toolName + ' - ' + btntext +' button clicked'});\n});\n$('#signup').click(function(e){\n\/\/  var btntext = $(this).prop('textContent');\n\/\/  btntext = btntext.trim();\n\/\/   var delayInMilliseconds = 1000;\/\/No i18N\ne.preventDefault();\/\/No i18N\ntoolName = document.title;\nif(toolName!==undefined){\n\/\/                $zoho.spotlight.track('Tools Sign up Links',{ description:toolName + ' - ' +  btntext + ' button clicked'});\n\/* Custom attributes in RUM for tools signup links *\/\nif(window.s247r ){\ns247r(\"Tools Signup links\",toolName);\ns247r(\"Tools Signup links count\", 1);\ns247r(\"flush_metrics\");\n}\n}\n\/\/ setTimeout(function() {\/\/No i18N\n\/\/ },delayInMilliseconds);\/\/No i18N\nsignUpAndMonitor('tools-promo');\n});\ntry {\nif (zohouser[\"DISPLAY_NAME\"] !== undefined && zohouser[\"DISPLAY_NAME\"].length > 0) {\n$('.guest-item').hide();\n$('#access-btn').show();\n}\n} catch (e) {\nconsole.log(e);\n}\n});<\/script><script type=\"text\/javascript\">$(document).ready(function() { \n$('.langtab').hide();\n$('#lang-1').show();\n$('#lang1').attr('checked',true);\n$('.flagshide2').hide();\n$('.flagshide3').hide();\n$('.languageclass').click(function() {\nvar regexInput = \"\",\nstringInput = \"\";\nif ($(\"#lang-1\").css('display') === 'block') {\nregexInput = $('#rgxjs').val();\nstringInput = $('#strjs').val();\n$('#rgxphp').val(regexInput);\n$('#strphp').val(stringInput);\n$('#rgxpy').val(regexInput);\n$('#strpy').val(stringInput);\n$('#rgxphp').css(\"color\",\"black\");\n$('#strphp').css(\"color\",\"black\");\n$('#rgxpy').css(\"color\",\"black\");\n$('#strpy').css(\"color\",\"black\");\n}\nelse if($(\"#lang-2\").css('display') === 'block') {\nregexInput = $('#rgxphp').val();\nstringInput = $('#strphp').val();\n$('#rgxjs').val(regexInput);\n$('#strjs').val(stringInput);\n$('#rgxpy').val(regexInput);\n$('#strpy').val(stringInput);\n\/\/   $('#rgxjs').css(\"color\",\"black\");\n\/\/   $('#strjs').css(\"color\",\"#black\");\n\/\/   $('#rgxpy').css(\"color\",\"#black\");\n\/\/   $('#strpy').css(\"color\",\"#black\");\n}\nelse if($(\"#lang-3\").css('display') === 'block') {\nregexInput = $('#rgxpy').val();\nstringInput = $('#strpy').val();\n$('#rgxjs').val(regexInput);\n$('#strjs').val(stringInput);\n$('#rgxphp').val(regexInput);\n$('#strphp').val(stringInput);\n\/\/   $('#rgxjs').css(\"color\",\"black\");\n\/\/   $('#strjs').css(\"color\",\"black\");\n\/\/   $('#rgxphp').css(\"color\",\"black\");\n\/\/   $('#strphp').css(\"color\",\"black\");\n}\n$('.langtab').hide();\nvar elt=this.getAttribute('for');\nvar id=elt.substring(4);\n$('#lang-'+id).show();\nif(id == 1)\n{\n$('.flagshide2').hide();\n$('.flagshide3').hide();\n}\nelse if(id == 2)\n{\n$('.flagshide2').show();\n$('.flagshide3').hide();\n}\nelse if(id == 3)\n{\n$('.flagshide3').show();\n$('.flagshide2').hide();\n}\n});\n});\n$(document).ready(function () {\ndocument.getElementById(\"example1\").innerText = \"FOUND \\\"O\\\" MATCHED AT 0-1\\nFOUND \\\"A\\\" MATCHED AT 10-11\\nFOUND \\\"T\\\" MATCHED AT 17-18\\nFOUND \\\"K\\\" MATCHED AT 29-30\\nFOUND \\\"S\\\" MATCHED AT 39-40\"; \/\/No I18N\ndocument.getElementById(\"example2\").innerText = \"FOUND \\\"Once\\\" MATCHED AT 0-4\\nFOUND \\\"upon\\\" MATCHED AT 5-9\\nFOUND \\\"A\\\" MATCHED AT 10-11\\nFOUND \\\"time\\\" MATCHED AT 12-16\"; \/\/No I18N\ndocument.getElementById(\"example3\").innerText = \"MATCH 1\\nGROUP 1: \\\"O\\\"\\nMATCH 2\\nGROUP 1: \\\"A\\\"\"; \/\/No I18N\ndocument.getElementById(\"example4\").innerText = \"FOUND \\\"S\\\" MATCHED AT 0-1\\nFOUND \\\"i\\\" MATCHED AT 1-2\\nFOUND \\\"t\\\" MATCHED AT 2-3\\nFOUND \\\"e\\\" MATCHED AT 3-4\"; \/\/No I18N\ndocument.getElementById(\"example5\").innerText = \"FOUND \\\"Once\\\" MATCHED AT 0-4\\nMATCH 1\\nGROUP 1: \\\"O\\\"\"; \/\/No I18N\n});\ndocument.getElementById(\"rgxjs\").value = \"([A-Z])\\\\w+\"; \/\/No I18N\n\/\/ document.getElementById(\"rgxjs\").style.color = \"#999999\";\ndocument.getElementById(\"strjs\").value = \"Once upon A time There was a King with Seven sons\"; \/\/No I18N\n\/\/ document.getElementById(\"strjs\").style.color = \"#999999\";\ndocument.getElementById(\"rgxphp\").value = \"([A-Z])\\\\w+\"; \/\/No I18N\ndocument.getElementById(\"rgxphp\").style.color = \"#999999\";\ndocument.getElementById(\"strphp\").value = \"Once upon A time There was a King with Seven sons\"; \/\/No I18N\ndocument.getElementById(\"strphp\").style.color = \"#999999\";\ndocument.getElementById(\"rgxpy\").value = \"([A-Z])\\\\w+\"; \/\/No I18N\ndocument.getElementById(\"rgxpy\").style.color = \"#999999\";\ndocument.getElementById(\"strpy\").value = \"Once upon A time There was a King with Seven sons\"; \/\/No I18N\ndocument.getElementById(\"strpy\").style.color = \"#999999\";\nfunction matcher_javascript() {\ndocument.getElementById(\"outjs\").innerHTML = \"\";\ndocument.getElementById(\"objjs\").innerHTML = \"\";\nvar vrgx = document.getElementById(\"rgxjs\").value;\nvar vstr = document.getElementById(\"strjs\").value;\nvar checkedValue = \"\";\nvar inputElements = document.getElementsByClassName('flagCheckboxjs'); \/\/No I18N\nfor (var i = 0; inputElements[i]; ++i) {\nif (inputElements[i].checked) {\ncheckedValue += inputElements[i].value;\n}\n}\nvar modifier = checkedValue.replace(\"g\", \"\");\nvar istr = vstr;\nvar next = 0,\nobj = \"\",\nstart = 0,\nend = 0,\nostr = \"\",\npstr = \"\";\ntry {\nvar rex = new RegExp(vrgx, checkedValue);\nvar erex = new RegExp(vrgx, modifier);\n} catch (err) {\ndocument.getElementById(\"outjs\").innerHTML = err;\ndocument.getElementById(\"objjs\").innerHTML = err;\n}\nif (rex.test(vstr)) {\nvar out = vstr.match(rex);\nif (out != null) {\nvar j = out.length;\nif (!checkedValue.includes(\"g\")) j = 1;\nfor (i = 0; i < j; i++) {\nif ((match = erex.exec(vstr)) != null) {\nif (match[0] != \"\") {\nstart = end + match.index;\nnext = match.index + match[0].length;\nend = end + next;\nobj += \"found \\\"\" + match[0] + \"\\\" matched at \" + start + \" - \" + end + \"&#13;&#10;\"; \/\/No I18N\n}\nif (match[0] == \"\") {\nstart = end + match.index + 1;\nend = start;\nnext = 1;\nobj += \"found \\\"\" + match[0] + \"\\\" matched at \" + (start - 1) + \" - \" + (end - 1) + \"&#13;&#10;\"; \/\/No I18N\n}\npstr = istr.substring(0, next - match[0].length);\nif (match[0] != \"\") pstr += \"<span style=\\\"color:red\\\">\" + match[0] + \"<\/span>\";\nostr += pstr;\nistr = istr.substring(next);\nvstr = istr;\n};\nmatch = \"\";\n}\nostr += istr;\ndocument.getElementById(\"outjs\").innerHTML = ostr;\ndocument.getElementById(\"objjs\").innerHTML = obj;\n}\n} else {\ndocument.getElementById(\"outjs\").innerHTML = \"no match found\"; \/\/No I18N\n$(\"outjs\").addClass(\"error-field\");\ndocument.getElementById(\"objjs\").innerHTML = \"no match found\"; \/\/No I18N\n$(\"objjs\").addClass(\"error-field\");\n}\n}\nfunction matcher_php() {\ndocument.getElementById(\"outphp\").innerHTML = \"\";\ndocument.getElementById(\"objphp\").innerHTML = \"\";\nvar vrgx = document.getElementById(\"rgxphp\").value;\nvar vstr = document.getElementById(\"strphp\").value;\nvar vstrbackup = vstr;\nvar checkedValue = \"\";\nvar inputElements = document.getElementsByClassName('flagCheckboxphp'); \/\/No I18N\nfor (var i = 0; inputElements[i]; ++i) {\nif (inputElements[i].checked) {\ncheckedValue += inputElements[i].value;\n}\n}\nvar modifier = checkedValue.replace(\"g\", \"\");\nvar istr = vstr;\nvar next = 0,\nobj = \"\",\nstart = 0,\nend = 0,\nostr = \"\",\npstr = \"\";\nvar zero = 0;\nvar isKfound = false;\nvar CRLFfailure = false;\nvar cases = vrgx;\nif (vrgx.includes(\"\\\\K\")) {\nvar temp = vrgx.lastIndexOf(\"\\\\K\");\nvrgx1 = vrgx.substr(0, temp) + \")\" + vrgx.substr(temp + 1);\nvar vrgx = vrgx1.slice(0, temp + 1) + vrgx1.slice(temp + 2);\nvar vrgx = \"(?<=\".concat(vrgx);\n}\nwhile (vrgx.includes(\"\\\\k\\'\")) { \/\/No I18N\nvar temp = vrgx.indexOf(\"\\\\k\\'\");\nvar vrgx = String(vrgx).replace(\"\\\\k\\'\", \"\\\\k\\<\");\nfor (var i = temp; i < vrgx.length; i++) {\nif (vrgx[i] == \"\\'\") {\nvar vrgx = vrgx.substr(0, i) + \"\\>\" + vrgx.substr(i + 1);\nbreak;\n}\n}\n}\nwhile (vrgx.includes(\"\\\\k\\{\")) { \/\/No I18N\nvar temp = vrgx.indexOf(\"\\\\k\\{\");\nvar vrgx = String(vrgx).replace(\"\\\\k\\{\", \"\\\\k\\<\");\nfor (var i = temp; i < vrgx.length; i++) {\nif (vrgx[i] == \"\\}\") {\nvar vrgx = vrgx.substr(0, i) + \"\\>\" + vrgx.substr(i + 1);\nbreak;\n}\n}\n}\nwhile (vrgx.includes(\"\\?\\'\")) {\nvar temp = vrgx.indexOf(\"\\?\\'\");\nvar vrgx = String(vrgx).replace(\"\\?\\'\", \"\\?\\<\");\nfor (var i = temp; i < vrgx.length; i++) {\nif (vrgx[i] == \"\\'\") {\nvar vrgx = vrgx.substr(0, i) + \"\\>\" + vrgx.substr(i + 1);\nbreak;\n}\n}\n}\nif (vrgx.includes(\"\\(\\\\g\"))\n{\nif (vrgx.match(\/\\(\\\\g.+\\)\/g)) {\nwhile (vrgx.includes(\"\\\\g\\'\")) { \/\/No I18N\nvar temp = vrgx.indexOf(\"\\\\g\\'\");\nvar vrgx = String(vrgx).replace(\"\\\\g\\'\", \"\\\\g\");\nfor (var i = temp; i < vrgx.length; i++) {\nif (vrgx[i] == \"\\'\") {\nvar vrgx = vrgx.substr(0, i)  + vrgx.substr(i + 1);\nbreak;\n}\n}\n}\nwhile (vrgx.includes(\"\\\\g\\{\")) { \/\/No I18N\nvar temp = vrgx.indexOf(\"\\\\g\\{\");\nvar vrgx = String(vrgx).replace(\"\\\\g\\{\", \"\\\\g\");\nfor (var i = temp; i < vrgx.length; i++) {\nif (vrgx[i] == \"\\}\") {\nvar vrgx = vrgx.substr(0, i) + vrgx.substr(i + 1);\nbreak;\n}\n}\n}\nwhile (vrgx.includes(\"\\\\g\\<\")) { \/\/No I18N\nvar temp = vrgx.indexOf(\"\\\\g\\<\");\nvar vrgx = String(vrgx).replace(\"\\\\g\\<\", \"\\\\g\");\nfor (var i = temp; i < vrgx.length; i++) {\nif (vrgx[i] == \"\\>\") {\nvar vrgx = vrgx.substr(0, i)  + vrgx.substr(i + 1);\nbreak;\n}\n}\n}\nvar tempcap=[];\nvar matchgroupG=[];\nvar p=0;\nvar finalIndex,startIndex;\nif(vrgx.match(\/\\([\\\\g\\d]+\\)\/g)){\nvar sub = vrgx.indexOf(\"\\(\\\\g\");\nwhile (vrgx.includes(\"\\\\g\")) { \/\/No I18N\ntempcap[p] = vrgx.indexOf(\"\\\\g\")-1;\nvar vrgx = String(vrgx).replace(\/\\\\g\/, \"\");\np++;     \n}\nfor(ctr=0;ctr<tempcap.length;ctr++){\nmatchgroupG[ctr] = vrgx.charAt(tempcap[ctr]+1);\n}\nstartIndex = tempcap[0];\nfor(cp=startIndex;cp<vrgx.length;cp++){\nif(vrgx[cp]==\"\\)\"){\nfinalIndex = cp;\nbreak;\n}\n}\nvrgx = vrgx.substr(0,startIndex+1)+vrgx.substr(finalIndex,vrgx.length);\n}\nvar tempvstrG = vstr;\nvar tempvrgxG = vrgx;\nvar temprexG = new RegExp(tempvrgxG, \"\");\nmatch = temprexG.exec(tempvstrG);\nif (match) {\nfor(var itr=matchgroupG.length;itr>=1;itr--){\nif (match[itr] != undefined && match[itr] != \"\") {\nvar tempcapgroupG = match[itr];\n} else if (match[itr] == undefined || match[itr] == \"\") {\nvar tempcapgroupG = \"thisisundefinedasd\"; \/\/No I18N\n}\nvar tempgroups = tempcapgroupG;\nvar tempvrgxbackup = vrgx.substr(0, startIndex+1)  + tempgroups  + vrgx.substr(startIndex+1,vrgx.length);\nvrgx = tempvrgxbackup;\n}\n}\n}\n}\nif (vrgx.includes(\"\\(\\?\\(\"))\n{\nif (vrgx.match(\/\\(\\?\\([\\d]\\).*\\|.*\\)\/g)) {\nvar temp = vrgx.indexOf(\"\\(\\?\\(\");\nvar capgroup = vrgx[temp + 3];\nif (capgroup < 1) {\nCRLFfailure = true;\ndocument.getElementById(\"outphp\").innerHTML = \"Invalid Syntax - Group name is invalid\"; \/\/No I18N\ndocument.getElementById(\"objphp\").innerHTML = \"Invalid Syntax - Group name is invalid\"; \/\/No I18N\n}\nvar tempvrgx = String(vrgx).replace(\/\\(\\?\\([\\d]\\)\/g, \"(?:\");\nvar tempvstr = vstr;\nvar temprex = new RegExp(tempvrgx, \"\");\nmatch = temprex.exec(tempvstr);\nif (match) {\nif (match[capgroup] != undefined &#038;&#038; match[capgroup] != \"\") {\nfor (z = match.length; z >= capgroup; z--) {\nif (match[z] != undefined) {\nvar tempcapgroup = match[z];\nbreak;\n}\n}\n} else if (match[capgroup] == undefined || match[capgroup] == \"\") {\nvar tempcapgroup = \"thisisundefinedasd\"; \/\/No I18N\n}\nvar tempgroup = tempcapgroup;\n} else {\n}\nvar tempvrgx = tempvrgx.substr(0, temp + 3) + \"(?<=\" + tempgroup + \")\" + tempvrgx.substr(temp + 3);\nvrgx = tempvrgx;\n}\n}\nif (vrgx.includes(\"\\(\\?\\(\\?\\=\")) {\nif (vrgx.match(\/\\(\\?\\(\\?\\=.*\\).*\\|.*\\)\/g)) {\nvrgx = String(vrgx).replace(\/\\(\\?\\(\\?\\=\/g, \"\\(\\?\\:\\(\\?\\=\");\n}\n}\nif (vrgx.includes(\"\\(\\?\\(\\?\\<\\=\")) {\nif (vrgx.match(\/\\(\\?\\(\\?\\<\\=.*\\).*\\|.*\\)\/g)) {\nvrgx = String(vrgx).replace(\/\\(\\?\\(\\?\\<\\=\/g, \"\\(\\?\\:\\(\\?\\<\\=\");\n}\n}\nif (vrgx.includes(\"\\(\\*ACCEPT\\)\")) {\nvar tempindex = vrgx.indexOf(\"\\(\\*ACCEPT\\)\");\nvar vrgx = vrgx.substr(0, tempindex);\n}\nif (vrgx.includes(\"\\(\\*COMMIT\\)\")) {\nvar tempindex = vrgx.indexOf(\"\\(\\*COMMIT\\)\");\nvar commitVariable = vrgx.substr(tempindex + 9, vrgx.length);\nvar commitCondition = true;\nvar commitBreak = false;\nvar vrgx = vrgx.substr(0, tempindex);\n}\nif (vrgx.match(\/.+\\(\\*BSR_ANYCRLF\\)\/g) || vrgx.match(\/.+\\(\\*CR\\)\/g) || vrgx.match(\/.+\\(\\*CR\\)\/g) || vrgx.match(\n\/.+\\(\\*LF\\)\/g) || vrgx.match(\/.+\\(\\*CRLF\\)\/g) || vrgx.match(\/.+\\(\\*ANYCRLF\\)\/g) || vrgx.match(\n\/.+\\(\\*ANY\\)\/g)) {\nvar CRLFfailure = true;\ndocument.getElementById(\"outphp\").innerHTML = \"Invalid Syntax - Control verb position is invalid\"; \/\/No I18N\ndocument.getElementById(\"objphp\").innerHTML = \"Invalid Syntax - Control verb position is invalid\"; \/\/No I18N\n}\nvar vrgx = String(vrgx)\n.replace(\/\\[\\[:alnum:\\]\\]\/g, \"[A-Za-z0-9]\")\n.replace(\/\\[\\[:alpha:\\]\\]\/g, \"[A-Za-z]\")\n.replace(\/\\[\\[:ascii:\\]\\]\/g, \".\")\n.replace(\/\\[\\[:blank:\\]\\]\/g, \"[ ]\")\n.replace(\/\\[\\[:cntrl:\\]\\]\/g, \"[\\x00-\\x1F\\x7F]\")\n.replace(\/\\[\\[:digit:\\]\\]\/g, \"[0-9]\")\n.replace(\/\\[\\[:graph:\\]\\]\/g, \"[!-~]\")\n.replace(\/\\[\\[:lower:\\]\\]\/g, \"[a-z]\")\n.replace(\/\\[\\[:print:\\]\\]\/g, \"[^\\n]\")\n.replace(\/\\[\\[:punct:\\]\\]\/g, \"[!\\\"#$%&#038;'()*+,-.\/:;<=>?@[^_`{|}~]\")\n.replace(\/\\[\\[:space:\\]\\]\/g, \"\\\\s\")\n.replace(\/\\[\\[:upper:\\]\\]\/g, \"[A-Z]\")\n.replace(\/\\[\\[:word:\\]\\]\/g, \"\\\\w\")\n.replace(\/\\[\\[:xdigit:\\]\\]\/g, \"[0-9a-fA-F]\")\n.replace(\/\\[\\[:<:\\]\\]\/g, \"\\\\b(?=\\\\w)\")\n.replace(\/\\[\\[:>:\\]\\]\/g, \"\\\\b(?<=\\\\w)\")\n.replace(\/\\[\\[:>:\\]\\]\/g, \"\\\\b(?<=\\\\w)\")\n.replace(\/\\\\X\/g, \".|\\n\")\n.replace(\/\\\\C\/g, \".|\\n\")\n.replace(\/\\\\R\/g, \"[\\r\\n]\")\n.replace(\/\\\\V\/g, \"[^\\\\v]\")\n.replace(\/\\\\h\/g, \"\\\\s\")\n.replace(\/\\\\H\/g, \"[^ ]\")\n.replace(\/\\\\K\/g, \"\")\n.replace(\/\\\\A\/g, \"\\^\")\n.replace(\/\\\\z\/g, \"$\")\n.replace(\/\\\\Z\/g, \"$\")\n.replace(\/\\*\\+\/g, \"*\")\n.replace(\/\\(\\?P\/g, \"(?\")\n.replace(\/\\(\\?#(.*?|)\\)\/g, \"\")\n.replace(\/\\(\\*CR\\)\/, \"\\r*\")\n.replace(\/\\(\\*LF\\)\/, \"\\n*\")\n.replace(\/\\(\\*CRLF\\)\/, \"[\\r\\n]*\")\n.replace(\/\\(\\*ANYCRLF\\)\/, \"[\\r\\n]*\")\n.replace(\/\\(\\*BSR_ANYCRLF\\)\/, \"[\\r\\n]*\")\n.replace(\/\\(\\*ANY\\)\/, \"[\\r\\n]*\")\n.replace(\/\\(\\*FAIL\\)\/, \"(?!)\")\n.replace(\/\\\\PS\/g, \"[^??$??^+=|><~`??????]\")\n.replace(\/\\\\pS\/g, \"[??$??^+=|><~`??????]\")\n.replace(\/\\*\\+\/g, \"\\*\")\n.replace(\/\\\\Q\/g, \"\")\n.replace(\/\\\\E\/g, \"\");\nif (document.getElementById(\"xflagphp\").checked) {\nvar vrgx = String(vrgx).replace(\/ \/g, \"\");\n}\nif (document.getElementById(\"Uflagphp\").checked) {\nvrgx = String(vrgx)\n.replace(\/\\*\/g, \"\\*\\?\")\n.replace(\/\\+\/g, \"\\+\\?\");\n}\ntry {\nvar rex = new RegExp(vrgx, checkedValue);\nvar erex = new RegExp(vrgx, modifier);\n} catch (err) {\ndocument.getElementById(\"outphp\").innerHTML = err;\ndocument.getElementById(\"objphp\").innerHTML = err;\n}\nvar j = 0;\nvar vstrcopy = vstr;\nif (!CRLFfailure) {\ntry {\nif (rex.test(vstr)) {\nvar out = vstr.match(rex);\nif (out != null) {\nvar j = out.length;\nif (!checkedValue.includes(\"g\")) j = 1;\nfor (i = 0; i < j; i++) {\nif (((match = erex.exec(vstr)) != null)) {\nif (match[zero] != \"\") {\nstart = end + match.index;\nnext = match.index + match[zero].length;\nend = end + next;\nif (commitCondition) {\nvstrCommitString = vstrcopy.substr(end, commitVariable.length);\nif (vstrCommitString == commitVariable) {\nvar commitEnd = end + commitVariable.length;\nobj += \"found \\\"\" + match[zero] + vstrCommitString + \"\\\" matched at \" + start + \" - \" + commitEnd + \"&#13;&#10;\"; \/\/No I18N\n} else {\nvar commitBreak = true;\nbreak;\n}\n} else {\nobj += \"found \\\"\" + match[zero] + \"\\\" matched at \" + start + \" - \" + end + \"&#13;&#10;\"; \/\/No I18N\n}\n}\nif (match[zero] == \"\") {\nstart = end + match.index + 1;\nend = start;\nnext = 1;\nobj += \"found \\\"\" + match[zero] + \"\\\" matched at \" + (start - 1) + \" - \" + (end - 1) + \"&#13;&#10;\"; \/\/No I18N\n}\nif (match.groups) {\nvar keys = Object.keys(match.groups);\nfor (var x = 0; x < keys.length; x++) {\nvar groupname = keys[x];\nobj += \"Group name : \" + groupname + \"\\tmatched value : \" + match.groups[groupname] + \"\\n\"; \/\/No I18N\n}\n}\nfor (var xj = 1; xj < match.length; xj++) {\nif (match[xj]) {\nobj += \"Group name : \" + xj + \"\\tmatched value : \" + match[xj] + \"\\n\"; \/\/No I18N\n}\n}\npstr = istr.substring(0, next - match[zero].length);\nif (match[zero] != \"\") pstr += \"<span style=\\\"color:red\\\">\" + match[zero] + \"<\/span>\";\nostr += pstr;\nistr = istr.substring(next);\nvstr = istr;\n}\nmatch = \"\";\n}\nostr += istr;\nif (commitBreak) {\nif (ostr != \"\") {\ndocument.getElementById(\"outphp\").innerHTML = ostr;\n$(\"outphp\").removeClass(\"error-field\");\n} else {\ndocument.getElementById(\"outphp\").innerHTML = \"no match found\"; \/\/No I18N\n$(\"outphp\").addClass(\"error-field\");\n}\n} else {\ndocument.getElementById(\"outphp\").innerHTML = ostr;\n}\ndocument.getElementById(\"objphp\").innerHTML = obj;\n}\n} else {\ndocument.getElementById(\"outphp\").innerHTML = \"no match found\"; \/\/No I18N\n$(\"outphp\").addClass(\"error-field\");\ndocument.getElementById(\"objphp\").innerHTML = \"no match found\"; \/\/No I18N\n$(\"objphp\").addClass(\"error-field\");\n}\n} catch (errmsg) {\ndocument.getElementById(\"outphp\").innerHTML = \"Error\" + errmsg; \/\/No I18N\ndocument.getElementById(\"objphp\").innerHTML = \"Error\" + errmsg; \/\/No I18N\n}\n}\n}\nfunction matcher_python() {\ndocument.getElementById(\"outpy\").innerHTML = \"\";\ndocument.getElementById(\"objpy\").innerHTML = \"\";\ndocument.getElementById(\"group\").innerHTML = \"\";\nvar inputRegex = document.getElementById(\"rgxpy\").value;\nvar inputString = document.getElementById(\"strpy\").value;\nvar checkedValue = \"\";\nvar istr = inputString;\nvar next = 0,\nobj = \"\",\nstart = 0,\nend = 0,\nostr = \"\",\npstr = \"\",\ngroup = \"\",\nisNamedGroupPresent = false,\nmatchesToBePassed = \"\",\nduplicateRegex = inputRegex,\nnotToCapture = {};\nvar atStart = \"\\\\A\"; \/\/No I18N\nvar atEnd = \"\\\\Z\"; \/\/No I18N\nvar namedCaptureGroup = \"(?P<\"; \/\/No I18N\nvar comments = \"(\\\\(\\\\?#([^)])*)\";\nvar subPattern = \"\\\\(\\\\?P=[a-zA-Z0-9_]+\\\\)\"; \/\/No I18N\nvar embeddedFlag = \"\\\\(\\\\?[imgdus-]+\\\\)\"; \/\/No I18N\nvar conditionalStatement = \"\\\\(\\\\?\\\\(\\\\d\\\\)[\\\\s]*[^|]*[\\\\s]*[^)]*\\\\)\"; \/\/No I18N\nvar dotAll = \"[\\\\s\\\\S]\"; \/\/No I18N\nvar inputElements = document.getElementsByClassName('flagCheckboxpy'); \/\/No I18N\nfor (var i = 0; inputElements[i]; ++i) {\nif (inputElements[i].checked) {\ncheckedValue += inputElements[i].value;\n}\n}\ninputRegex = inputRegex.replace(atStart, \"^\");\ninputRegex = inputRegex.replace(atEnd, \"$\");\nwhile (inputRegex.indexOf(namedCaptureGroup) > -1) {\ninputRegex = inputRegex.replace(namedCaptureGroup, \"(?<\");\n}\ntry {\nvar conditionalStatementRegexObj = new RegExp(conditionalStatement, \"g\");\n} catch (err) {\ndocument.getElementById(\"outpy\").innerHTML = err;\ndocument.getElementById(\"objpy\").innerHTML = err;\ndocument.getElementById(\"group\").innerHTML = err;\n}\nvar matchedStatements = inputRegex.match(conditionalStatementRegexObj);\nif (matchedStatements != null) {\nvar inputRegexUsed = \"\",\ninputStringModified = inputString,\ncopyInputString = inputString,\niforelse = \"\",\nifelse = \"\",\ntest,\nlastOccuredMatch = null,\ngroupNumber = -1,\ncaptured = false,\nnotToCapture = [];\nfor (var i = 0; i < matchedStatements.length; ++i) {\ninputRegexUsed = \"\";\ngroupNumber = -1;\ncaptured = false;\ninputRegexUsed = inputRegex.substring(0, inputRegex.indexOf(matchedStatements[i]) + matchedStatements[i].length);\ninputRegexUsed = inputRegexUsed.replace(matchedStatements[i], \"\");\niforelse = matchedStatements[i].substring(matchedStatements[i].indexOf(\"(?(\") + 5, matchedStatements[i].lastIndexOf(\n\")\"));\nifelse = iforelse.replace(\"|\", \"\");\nif (inputStringModified.indexOf(ifelse) > -1) {\nvar tillIndex = inputStringModified.substring(0, inputStringModified.indexOf(ifelse));\ninputStringModified = inputStringModified.substring(0, inputStringModified.indexOf(ifelse));\n} else if (inputStringModified.indexOf(iforelse.substring(0, iforelse.indexOf(\"|\"))) > -1) {\nvar tillIndex = inputStringModified.substring(0, inputStringModified.indexOf(iforelse.substring(0,\niforelse.indexOf(\"|\"))));\ninputStringModified = inputStringModified.substring(0, inputStringModified.indexOf(iforelse.substring(0,\niforelse.indexOf(\"|\"))));\n} else if (inputStringModified.indexOf(iforelse.substring(iforelse.indexOf(\"|\"))) > -1) {\nvar tillIndex = inputStringModified.substring(0, inputStringModified.indexOf(iforelse.substring(iforelse\n.indexOf(\"|\"))));\ninputStringModified = inputStringModified.substring(0, inputStringModified.indexOf(iforelse.substring(\niforelse.indexOf(\"|\"))));\n}\ntry {\nvar exec = new RegExp(inputRegexUsed, \"g\");\nvar regobj = new RegExp(inputRegexUsed, \"\");\n} catch (err) {\ndocument.getElementById(\"outpy\").innerHTML = err;\ndocument.getElementById(\"objpy\").innerHTML = err;\ndocument.getElementById(\"group\").innerHTML = err;\n}\ntest = inputStringModified.match(exec);\nlastOccuredMatch = null;\nif (test == null) {\nmatchesToBePassed = iforelse.substring(iforelse.indexOf(\"|\") + 1);\n} else {\nif (test[test.length - 2] != \"\") {\ncaptured = true;\n}\nistr = inputStringModified;\nfor (var j = 0; j < test.length; ++j) {\nif (test[j] != \"\") {\nlastOccuredMatch = (regobj.exec(inputStringModified) != \"\") ? regobj.exec(inputStringModified) :\nlastOccuredMatch;\n}\nif ((matches = regobj.exec(inputStringModified)) != null) {\nif (matches[0] != \"\") {\nstart = end + matches.index;\nnext = matches.index + matches[0].length;\nend = end + next;\n}\nif (matches[0] == \"\") {\nstart = end + matches.index + 1;\nend = start;\nnext = 1;\n}\nistr = istr.substring(next);\ninputStringModified = istr;\n}\n}\nif (lastOccuredMatch &#038;&#038; captured) {\ngroupNumber = parseInt(matchedStatements[i].charAt(3), 10);\nif (groupNumber >= lastOccuredMatch.length) {\ninputRegex = \"No capturing group \" + groupNumber + \" found\"; \/\/No I18N\ninputString = \"No capturing group \" + groupNumber + \" found\"; \/\/No I18N\nbreak;\n}\nif (lastOccuredMatch[groupNumber] != undefined) {\nmatchesToBePassed = iforelse.substring(0, iforelse.indexOf(\"|\"));\n} else {\nmatchesToBePassed = iforelse.substring(iforelse.indexOf(\"|\") + 1);\nnotToCapture[tillIndex] = iforelse.substring(0, iforelse.indexOf(\"|\"));\n}\n} else if (lastOccuredMatch == null) {\nmatchesToBePassed = iforelse.substring(iforelse.indexOf(\"|\") + 1);\nnotToCapture[tillIndex] = iforelse.substring(0, iforelse.indexOf(\"|\"));\n} else {\ngroupNumber = parseInt(matchedStatements[i].charAt(3), 10);\nif (groupNumber >= lastOccuredMatch.length) {\ninputRegex = \"No capturing group \" + groupNumber + \" found\"; \/\/No I18N\ninputString = \"No capturing group \" + groupNumber + \" found\"; \/\/No I18N\nbreak;\n}\nmatchesToBePassed = iforelse.substring(iforelse.indexOf(\"|\") + 1);\nnotToCapture[tillIndex] = iforelse.substring(0, iforelse.indexOf(\"|\"));\n}\n}\ninputStringModified = copyInputString.replace(ifelse, matchesToBePassed);\ncopyInputString = copyInputString.replace(ifelse, matchesToBePassed);\ninputRegex = duplicateRegex.replace(matchedStatements[i], matchesToBePassed);\nduplicateRegex = duplicateRegex.replace(matchedStatements[i], matchesToBePassed);\n}\n}\nistr = inputString;\nnext = 0;\nobj = \"\";\nstart = 0;\nend = 0;\nostr = \"\";\npstr = \"\";\ngroup = \"\";\ntry {\nvar commentsRegexObj = new RegExp(comments, \"g\");\n} catch (err) {\ndocument.getElementById(\"outpy\").innerHTML = err;\ndocument.getElementById(\"objpy\").innerHTML = err;\ndocument.getElementById(\"group\").innerHTML = err;\n}\nvar matchedComments = inputRegex.match(commentsRegexObj);\nif (matchedComments != null) {\nfor (var i = 0; i < matchedComments.length; ++i) {\ninputRegex = inputRegex.replace(inputRegex.substring(inputRegex.indexOf(matchedComments[i]), inputRegex.indexOf(\nmatchedComments[i]) + matchedComments[i].length + 1), \"\");\n}\n}\ntry {\nvar subPatternRegexObj = new RegExp(subPattern, \"gm\");\n} catch (err) {\ndocument.getElementById(\"outpy\").innerHTML = err;\ndocument.getElementById(\"objpy\").innerHTML = err;\ndocument.getElementById(\"group\").innerHTML = err;\n}\nvar matchedSubPatterns = inputRegex.match(subPatternRegexObj);\nif (matchedSubPatterns != null) {\nfor (var i = 0; i < matchedSubPatterns.length; ++i) {\nvar matchedString = matchedSubPatterns[i].replace(\"(?P=\", \"\\\\k<\");\nmatchedString = matchedString.replace(\")\", \">\");\ninputRegex = inputRegex.replace(matchedSubPatterns[i], matchedString);\n}\n}\ntry {\nvar embeddedFlagRegexObj = new RegExp(embeddedFlag, \"gm\");\n} catch (err) {\ndocument.getElementById(\"outpy\").innerHTML = err;\ndocument.getElementById(\"objpy\").innerHTML = err;\ndocument.getElementById(\"group\").innerHTML = err;\n}\nvar matchedEmbeddedFlag = inputRegex.match(embeddedFlagRegexObj);\nif (matchedEmbeddedFlag != null) {\ninputRegex = inputRegex.replace(matchedEmbeddedFlag[0], \"\");\nvar flagsCaptured = matchedEmbeddedFlag[0].replace(\"(?\", \"\").replace(\")\", \"\");\nfor (var j = 0; j < flagsCaptured.length; ++j) {\nif (!(checkedValue.indexOf(flagsCaptured.charAt(j)) > -1)) {\ncheckedValue += flagsCaptured.charAt(j);\n}\n}\n}\nvar dot = \".\";\nif (checkedValue.indexOf(\"s\") > -1 && inputRegex != \"\" && inputRegex.indexOf(\".\") > -1 && !(inputRegex == dot)) {\ncheckedValue = checkedValue.replace(\"s\", \"\");\nvar copyRegex = inputRegex,\nresRegex = \"\",\nclassEnded = false,\ninsideClass = false;\nfor (var i = 0; i < copyRegex.length; ++i) {\nif (copyRegex.charAt(i) == '[') {\ninsideClass = true;\n} else if (copyRegex.charAt(i) == ']') {\nclassEnded = true;\nresRegex += copyRegex.substring(0, i + 1);\ncopyRegex = copyRegex.substring(i + 1);\ni = -1;\ninsideClass = false;\nclassEnded = false;\ncontinue;\n}\nif (copyRegex.charAt(i) == '.' &#038;&#038; !insideClass) {\nresRegex += dotAll;\ncopyRegex = copyRegex.substring(i + 1);\ni = -1;\ncontinue;\n} else {\nresRegex += copyRegex.charAt(i);\ncopyRegex = copyRegex.substring(i + 1);\ni = -1;\n}\n}\ninputRegex = resRegex;\n}\nvar modifier = checkedValue.replace(\"g\", \"\");\nvar rex, erex;\ntry {\nrex = new RegExp(inputRegex, checkedValue);\nerex = new RegExp(inputRegex, modifier);\n} catch (err) {\ndocument.getElementById(\"outpy\").innerHTML = err;\ndocument.getElementById(\"objpy\").innerHTML = err;\ndocument.getElementById(\"group\").innerHTML = err;\n}\nif (rex.test(inputString) &#038;&#038; inputRegex != \"\") {\nvar matchindex = 0;\nvar out = inputString.match(rex);\nif (out != null) {\nvar j = out.length;\nif (!checkedValue.includes(\"g\")) j = 1;\nfor (i = 0; i < j; i++) {\nif ((match = erex.exec(inputString)) != null) {\nif (match[0] != \"\") {\nstart = end + match.index;\nnext = match.index + match[0].length;\nend = end + next;\nobj += \"FOUND \\\"\" + match[0] + \"\\\" MATCHED AT \" + start + \" - \" + end + \"&#13;&#10;\"; \/\/No I18N\n}\nif (match[0] == \"\") {\nstart = end + match.index + 1;\nend = start;\nnext = 1;\nobj += \"FOUND \\\"\" + match[0] + \"\\\" MATCHED AT \" + (start - 1) + \" - \" + (end - 1) + \"&#13;&#10;\"; \/\/No I18N\n}\nif (match[1] != null) {\n++matchindex;\ngroup += \"MATCH \" + (matchindex) + \"&#13;&#10;\"; \/\/No I18N\n}\nfor (var k = 1; k < match.length; ++k) {\nif (match[k] != null) {\ngroup += \"GROUP \" + k + \": \\\"\" + match[k] + \"\\\"\" + \"&#13;&#10;\"; \/\/No I18N\n}\n}\npstr = istr.substring(0, next - match[0].length);\nvar key, isNotToCapturePresent = false;\nfor (key in Object.keys(notToCapture)) {\nif (match[0].indexOf(notToCapture[key])) {\nisNotToCapturePresent = true;\nbreak;\n}\n}\nif (isNotToCapturePresent) {\nvar text = match[0].replace(key, \"\");\npstr += \"<span style=\\\"color:red\\\">\" + text + \"<\/span>\";\n} else {\npstr += \"<span style=\\\"color:red\\\">\" + match[0] + \"<\/span>\";\n}\nif (match.groups) {\nvar keys = Object.keys(match.groups);\nfor (var k = 1; k <= keys.length; ++k) {\nobj += \"found Group \\'\" + keys[k - 1] + \"\\' - \\'\" + match[k] + \"\\'\" + \"&#13;&#10;\"; \/\/No I18N    \n}\n}\nostr += pstr;\nistr = istr.substring(next);\ninputString = istr;\n}\nmatch = \"\";\n}\nostr += istr;\ndocument.getElementById(\"outpy\").innerHTML = ostr;\ndocument.getElementById(\"objpy\").innerHTML = obj;\ndocument.getElementById(\"group\").innerHTML = group;\n}\n} else {\ndocument.getElementById(\"outpy\").innerHTML = \"No match found\"; \/\/No I18N\n$(\"#outpy\").addClass(\"error-field\");\ndocument.getElementById(\"objpy\").innerHTML = \"No match found\"; \/\/No I18N\n$(\"#objpy\").addClass(\"error-field\");\ndocument.getElementById(\"group\").innerHTML = \"No group matched\"; \/\/No I18N\n$(\"#group\").addClass(\"error-field\");\n}\n}\nfunction fcolor(element) {\nelement.style.color = 'black';\n}\nfunction getmodifier() {\nreturn checkedValue;\n}\n$(document).ready(function(){\n$(\".btn-wrapper label\").click(function(){\n$(\".btn-wrapper label\").removeClass(\"active\");\n$(this).addClass(\"active\");\n})\n})<\/script><\/div>","protected":false},"excerpt":{"rendered":"<p>Regex Tester and Debugger Tool Free tool which validates the given input string against the given regular expression and matches the output in accordance with the defined Regex. The tool supports parsing and debugging in Javascript, Python and PHP languages JavaScript PHP Python Input RegEx pattern: Modifier: Global(g) Case Insensitive(i) multiline(m) Input String : Match &#8230; <a title=\"Regex Tester and Debugger Tool\" class=\"read-more\" href=\"https:\/\/tools.billionsideas.com\/hi\/regex-tester-and-debugger-tool\/\" aria-label=\"Read more about Regex Tester and Debugger Tool\">Read more<\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","footnotes":""},"class_list":["post-703","page","type-page","status-publish"],"taxonomy_info":[],"featured_image_src_large":false,"author_info":{"display_name":"Billions Ideas","author_link":"https:\/\/tools.billionsideas.com\/hi\/author\/loginbillionsideas-com\/"},"comment_info":0,"jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tools.billionsideas.com\/hi\/wp-json\/wp\/v2\/pages\/703","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tools.billionsideas.com\/hi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tools.billionsideas.com\/hi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tools.billionsideas.com\/hi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tools.billionsideas.com\/hi\/wp-json\/wp\/v2\/comments?post=703"}],"version-history":[{"count":0,"href":"https:\/\/tools.billionsideas.com\/hi\/wp-json\/wp\/v2\/pages\/703\/revisions"}],"wp:attachment":[{"href":"https:\/\/tools.billionsideas.com\/hi\/wp-json\/wp\/v2\/media?parent=703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}