Cannabis Ruderalis

Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
//<syntaxhighlight lang=javascript>
var AutoEd_baseurl = 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Jonesey95/AutoEd/';
if (location.protocol === 'https:') {
  AutoEd_baseurl = 'https://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Jonesey95/AutoEd/';
}
 
$.when( $.ready, mw.loader.using( 'jquery.textSelection' ) ).then(function() {
  mw.loader.load(AutoEd_baseurl + 'core8.js'); //Imports the "framework" script needed to make this function
});

//Sets variable configuration - one-off fixes 
//autoEdTag8 = "Fixing error: [[:Category:Lang and lang-xx template errors]] using [[WP:AutoEd|AutoEd]]"; //Tweaks edit summary
//autoEdLinkName8 = "AutoEd one-off"; //Changes the link name at the top of the page
//autoEdLinkHover8 = "Run AutoEd to fix one-off problem"; //When user hovers over link

//Sets variable configuration - Linter fixes 
autoEdTag8 = "Fix [[Special:LintErrors|Linter]] errors. "; //Tweaks edit summary
autoEdLinkName8 = "AutoEd Linter"; //Changes the link name at the top of the page
autoEdLinkHover8 = "Run AutoEd to fix Linter errors"; //When user hovers over link

//Set up function
function ReplaceDOI(str) { //function to fix one-off problem

  //Fix Linter individual signatures

  str = str.replace(/(\'\'<small>\[\[User talk:Freechild \|talk\]\])(\'\')(<\/small>)/gi,'$1$3$2');

  str = str.replace(/(>\'\'\'yousaf465\')(<\/span>\]\])/gi,'$1\'\'$2');

  str = str.replace(/(<sup>\'\'\[\[User talk:SSTflyer#top\|discuss\]\])(<\/sup>)(\'\')/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Mr\. Smart LION\|<span style="color:hsl\(205, 98%, 55%\);">\'\'\'Mr\.\'\'\'<\/span> <span style="color:#0070EE;">\'\'\'Smart\'\'\')(\]\])(<\/span>)( \[\[User_talk:Mr\. Smart LION\|<span style="font\-family: monospace;font\-weight: bold;font\-size: 18px;color:#101090;">LION)(\]\])(<\/span>)/gi,'$1$3$2$4$6$5');

  str = str.replace(/(\'\'\'\[\[User:sspecter\|<span style="padding : 0px 1px 1px 1px; border : 1px solid #809EF5; color: #77a2FF">SSPecter<\/span>\]\])( <small>)(\'\'\')(<sup>\[\[User_talk:sspecter\|Talk\]\]\|\[\[Special:Emailuser\/Sspecter\|E\-Mail\]\]<\/sup>)(\'\'\')(<\/small> )(<span style="color:red;">&#9670;<\/span>\'\'\')/gi,'$1$3$2$4$6$5$7');

  str = str.replace(/(\|<span style="color:#FF0000;"><small>\'\'\'News Team\'\'\'<\/small>)(<span style="color:#000;"><small>\'\'\' Assemble\!\'\'\'<\/small><\/span>\]\]\[\[User talk:NewsTeamAssemble\|<sup>\[talk\?\]<\/sup>)(<\/span>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User:Adam1213\|<big><b>&#9786;<span style="color:#FF9900;">A<\/span>dam1213)<\/font>(\&#9786;)(<\/big>)(<\/b>)(\]\])/gi,'$1$2$4$3$5');
  str = str.replace(/(\[\[User:Adam1213\|<big><b>&#9786;<font color="#FF9900">A<\/font>dam1213)<\/font>(\&#9786;)(<\/big>)(<\/b>)(\]\])/gi,'$1$2$4$3$5');

  str = str.replace(/(<font color="#363636">\'\'\'Murat\'\'\')(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(<sup>\'\'<font face="Calibri" color="#660000">\[\[User talk:Ohmpandya\|We need to talk\.\.\.\]\] ♦ \[\[Special:Contributions\/Ohmpandya\|contribs\]\])(\'\')(<\/font>)(<\/sup>)/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User talk:Ssven2\|<sup><span style="font\-family: Times New Roman;color:#E30022">Speak 2 me<\/span>)\'\'(<\/sup>\]\])/gi,'$1$2');

  str = str.replace(/(>)(\'\'\')(<big>)(Zac\'\'\' <\/big>)/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User:OccultZone\|\'\'\'<span style="color:DarkBlue;">Occult<\/span><span style="color:blue;">Zone)(\'\'\'\]\] <small>\(\[\[User talk:OccultZone#Top\|Talk\]\] • \[\[Special:Contributions\/OccultZone\|Contributions\]\] • \[\[Special:Log\/OccultZone\|Log\]\]\)<\/small>)(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\|<font color=[a-z]+>Freewayguy)(\]\])/gi,'$1<\/font>$2');

  str = str.replace(/(<sub>\[\[Wikipedia:Editor review\/LAAFan 2\|review\]\])(\'\')(<\/sub>)/gi,'$1$3$2');

  str = str.replace(/( \[\[User:MaranoFan\|<span style="font\-family: DokChampa Print;color:brown"> \'\'\'MaRAno\'\'\'<\/span>)(\'\')(\]\])/gi,'$1$3');

  str = str.replace(/(\|<span style="font\-family:[a-z ]+;color:[#a-z\d ]+"> \'\'\'AB01\'\'\'<\/span>)\'\'(\]\])/gi,'$1$2');

  // misnested font tag in signature with a color in it
  str = str.replace(/(\|<font color="[#a-z\d ]+">[a-z \d\'\)\(]+)(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(<span style="font\-family:Calibri;">)(\'\'\')(\[\[User:K. Annoyomous\|<span style="color:#[a-z\d]+">K. *Annoyomous<\/span>\]\] \[\[User talk:K. Annoyomous\|<span style="color:#[a-z\d]+">\(talk\)<\/span>\]\]<\/span>\'\'\')/gi,'$2$1$3');
  str = str.replace(/(<font face="Comic Sans MS"> \'\'\'\[\[User:K. Annoyomous24\|<span style="color:#[a-z\d]+">K. Annoyomous<\/span>\]\]\[\[User talk:K. Annoyomous24\|<span style="color:#5C2F83">24<\/span>\]\])(<\/font>)(\'\'\')/gi,'$1$3$2');

  str = str.replace(/(<span style="font\-family:Mistral;">)(\'\'\')(\[\[\[\[User:SRE.K.A.L.24\|<span style="color:#FCB926">SRE.K.A.L.<\/span>\]\])\|(\[\[User talk:SRE.K.A.L.24\|<span style="color:#5C2F83">L.A.K.ERS<\/span>\]\]\]\]<\/span>[a-z<>\/ ]*\'\'\')/gi,'$2$1$3&#124;$4');
  str = str.replace(/<font face="(Mistral">)(\'\'\')(\[\[\[\[User:SRE.K.A.L.24\|<span style="color:#FCB926">SRE.K.A.L.<\/span>\]\])\|(\[\[User talk:SRE.K.A.L.24\|<span style="color:#5C2F83">L.A.K.ERS<\/span>\]\]\]\])<\/font>([a-z<>\/ ]*\'\'\')/gi,'$2<span style="font\-family:"$1$3&#124;$4<\/span>$5');

  str = str.replace(/(\[\[User:Anas Salloum\|)(<font color="Black">)(\'\'\')(A<\/font><font color="Grey">nas)(\'\'\')(<\/font>)(\]\])/gi,'$1$3$2$4$6$5$7');
  str = str.replace(/(\[\[User:Anas Salloum\|)(<span style="color:Black;">)(\'\'\')(\'\'A\'\'n<\/span><span style="color:Grey;">as)(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4$6$5$7');

  str = str.replace(/(\'\'\'<span style="font\-size:small;">\[\[User:Wadester16\|<span style="color:[a-z]+">ωαdεstεr<\/span><span style="color:[a-z\d#]+">16<\/span>\]\])(\'\'\')(<\/span>)/gi,'$1$3$2');
  str = str.replace(/\'\'\'<font size="[smal2]+">(\[\[User:Wadester16\|<span style="color:[a-z]+">ωαdεstεr<\/span><span style="color:[a-z\d#]+">16<\/span>\]\])\'\'\'<\/font>/gi,'<b style="font\-size:small;">$1<\/b>');

  str = str.replace(/(\[\[User:Dinoguy1000\|<span style=color:#00f>[ダイノディノ]+)(<span style=color:#080>[ガイ奴]+)(\]\]\[\[Special:Contributions\/Dinoguy1000\|<span style=color:#F90>千?!)(\]\])/gi,'$1</span>$2</span>$3</span>$4');
  str = str.replace(/(Dinoguy1000[<\/small>]*\]\]<\/sup><\/span>)<\/span>/gi,'$1');

  str = str.replace(/(<sup>\(\[\[User talk:Seraphim System\|<span style="color:#009900">talk)(\]\]\))(<\/span>)(<\/sup>)/gi,'$1$3$2$4');

  str = str.replace(/(\|<span style="background:#5d9731; color:white; padding:2px;">Sounder<\/)font(>\]\])/gi,'$1span$2');

  str = str.replace(/(<sup>\'\'\'\[\[User Talk:NG39\|<span style="color:red;">Talk<\/span>\]\])(<\/sup>)(\'\'\')/gi,'$1$3$2');

  str = str.replace(/(\|<span style="font\-family:Arial;color:#007BA7">talk)(\]\]\'\'\')(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(Comment on )\'\'(\[\[Wikipedia:Featured article candidates\/Dredd\/archive1\|\'\'Dredd\'\'\]\]\'s FA nom!)/gi,'$1$2');

  str = str.replace(/(\|[<sup>]*<span style="[a-z\-: ;]*color: *#FF00FF">\([speakto mbhrd]+\))(\]\])(<\/span>[<\/sup>]*)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Avocato\|<font color="#0645ad">\'\'\'Avocato\'\'\')(\]\]<\/span> )<font face="Tahoma" size="1">(\[\[User talk:Avocato\|<font color="#fb139e">\'\'\'\(talk\)\'\'\')(\]\])(<\/font>)<\/font>/gi,'$1<\/font>$2<small style="font\-family:Tahoma">$3$5$4<\/small>');

  str = str.replace(/\[\[User:Finn Casey\|<span style="font\-variant:small\-caps"><font color=" #660033"><b>Finn Casey(\]\]&nbsp;\[\[User talk:Finn Casey\|\*\]\]&nbsp;\[\[User:Finn Casey\/adminship\|\*\]\]&nbsp;\[\[User:Finn Casey\/appreciation\|\*\]\])<\/b><\/font><\/span>/gi,'\[\[User:Finn Casey\|<b style="font\-variant:small\-caps; color:#660033">Finn Casey<\/b>$1');

  str = str.replace(/(; \'\'What would you like to change about that\?)(\n)/gmi,'$1\'\'$2');

  str = str.replace(/<font=3> (Thanks for your support, my \[\[Wikipedia:Requests for adminship\/Ruhrfisch\|request for adminship\]\] passed 62\/0\/0 yesterday\!) <\/font>/gi,'$1');

  str = str.replace(/(<small>)( \[\[User talk:NJA\|<em style="color:#63D1F4">)(\'\'\')(\(t\/<\/em>\]\]\[\[Special:Contributions\/NJA\|<em style="color:#63D1F4">c\)<\/em>\]\]\'\'\'<\/small>)/gi,'$1$3$2$4');

  str = str.replace(/(\|\'\'\'\'\'<span style="color:Black;">Bacon)(\'\'\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User:Seadog\.M\.S\|<font color="darkgreen">\'\'\'Seadog\'\'\')(\]\]<sup>\[\[User talk:Seadog\.M\.S\|<span style=color:darkblue;>Talk)(\]\]<\/sup>)(<\/font>)/gi,'$1$4$2<\/span>$3');

  str = str.replace(/(\[\[User[a-z_ ]*:AKMask\|<font color="#990011">[a-z]+)(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User talk:Shirtwaist\|<sup><span style="color:BurlyWood;">chat<\/span>)(\]\])( <\/sup>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Musicfreak7676\|\'\'\'<sub><span style="color:#deepskyblue;font\-family:Euphemia">Music<span style="color:deeppink;font\-family:Euphemia">Freak<\/span>7676<\/span>)(\'\'\'\]\])(<\/sub>)/gi,'$1$3$2');
  str = str.replace(/(\[\[User:Musicfreak7676\|\'\'\'<sub><span style="color:Crimson;font\-family:Trebuchet MS">Music<span style="color:SeaGreen;font\-family:Euphemia">Freak<\/span>7676<\/span>)(\'\'\'\]\])(<\/sub>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Tofutwitch11\|<span style=\'font\-family: "Arial Black"; color:Teal\'><big>T<\/big><small>ofutwitch11<\/small><\/span>\]\]\'\'\' <sup><small>\[\[User talk:Tofutwitch11\|<font color="Orange">\(T<small>ALK<\/small>\)<\/font>\]\]<\/small><\/sup>)( \d\d)/gi,'$1\'\'\'$2');

  str = str.replace(/(:\'\'The above discussion is preserved as an archive of the debate.  <span style="color:red">\'\'\'Please do not modify it\.\'\'\'<\/span> No further edits should be made to this discussion\. )(<\!\-\-Template:Rfc bottom\-\-><\/div>)/gi,'$1\'\'$2');

  str = str.replace(/(\'\'\'\[\[User[ talk]*:Nableezy\|<span style="color:#C11B17;">nableezy<\/span>\]\]\'\'\' \- \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/font>/gi,'$1');

  str = str.replace(/(\|<span style="text\-shadow: white 0px 0px 2px;">talk<\/)font(>\]\])/gi,'$1span$2');

  str = str.replace(/(<u>\'\'\'\[\[User:STATicVapor\|StaticVapor\]\] <small>\[\[User talk:STATicVapor\|<span style="vertical\-align:super;">message me\!<\/span>\]\]<\/small>)(<\/u>)(\'\'\')/gi,'$1$3$2');

  str = str.replace(/(\[\[User:AkshayAnand\|<b><span style="color:#329ddf">Akshay<\/span><span style="color:#24527c">Anand<\/span>)(\]\])(<\/b>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User talk:OxonAlex\|<span style="color: darkgreen">\- talk)(\]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(<p>The [a-z]+ notes:)( <blockquote>)/gi,'$1<\/p>$2');

  str = str.replace(/(\[\[User:CptViraj\|)(<span style="font\-family:Century Gothic">)(<b style="color:teal">Cpt<span style="color:green">Viraj<\/span>)(\]\] \[\[User talk:CptViraj\|<)span( style="color:black">\(Talk\))<\/span>(<\/b>)(<\/span>)(\]\])/gi,'$2$1$3<\/b>$4b$5$6$8$7');

  str = str.replace(/(\[\[User:Karl 334\|<span style="font\-family:Comic Sans MS; color:Blue">\'\'\'Karl 334\'\'\'<\/span>\]\] \[\[User talk:Karl 334\|)<font color="Red"><sup>\'\'Talk\-\'\'(<\/sup>\]\]\[\[Special:Contributions\/Karl_334\|)<font color="Red"><sup>\'\'\-Contribs\'\'(<\/sup>\]\])<\/font><\/font>/gi,'$1<sup style="color:red;">\'\'Talk\-\'\'$2<sup style="color:red;">\'\'\-Contribs\'\'$3');

  str = str.replace(/(<span style="font\-family:Segoe Media Center">\[\[User:Jeffrey Mall\|Jeffrey Mall)<\/font>(\]\]<\/span>)/gi,'$1$2');

  str = str.replace(/(\'\'\'\[\[User[a-z ]*:Gloss\|<span style="font\-family:Arial;color:#000080">G<span style="font\-family:Arial;color:#007BA7">loss<\/span>)(\]\]\'\'\')(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(<sup>\'\'\'\(\[\[User talk:Ed Fitzgerald\|t\]\] \/ \[\[Special:Contributions\/Ed Fitzgerald\|c\]\]\))(<\/sup>)(\'\'\')/gi,'$1$3$2');

  str = str.replace(/(\[\[User:CynRN\|\'\'\'\'\')<font face="Chiller" size="2px" color="deeppink">(—CynRN)<\/font>(\'\'\'\'\'\]\] <sup>\'\')<font face="Calibri" color="006400">(\(\[\[User talk:CynRN\|)(Talk)(\]\]\))(\'\')<\/font>(<\/sup>)/gi,'$1<span style="font\-family:Chiller; font\-size:small; color:deeppink;">$2<\/span>$3<span style="font\-family:Calibri; color:#006400;">$4<span style="color:#006400;">$5<\/span>$6<\/span>$7$8');

  str = str.replace(/(\|<span style="color:darkblue;background:white;">\'\'\'MC\'\'\')(\]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(<small><sup><span style="color:[a-z]+;">89<\/span> \[\[User talk:Canuckian89\|\([a-z !\?\']+\)\]\])(<\/small\>)(<\/sup>)/gi,'$1$3$2');
  str = str.replace(/(<small><sup>\[\[User talk:Canuckian89\|89 \([a-z !\?\']+\)\]\])(<\/small>)(<\/sup>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Farjad0322\|)(<font face="Times New Roman, serif" color="Blue">)(\'\'\')(Farjad<\/font><font color="Purple">0322)(\'\'\')(\]\] )(<\/font>)/gi,'$1$3$2$4$7$5$6');

  str = str.replace(/(\'\'\[\[User:Newsletterbot\|<font face="High Tower Text" size="3px" color="#248011">Newsletter Bot<\/font>\]\])( \[\[User talk:Newsletterbot\|\'\'\'\'\'<font face="High Tower Text" size="1px" color="#0016FF">Talk<\/font>)(\]\])\'\'/gi,'$1\'\'$2\'\'\'\'\'$3');

  str = str.replace(/(\[\[User:BonesBrigade\|)(<span style="color:#00FFFF;background:#000000;">)(''')(Bones<\/span><span style="color:#FFFFFF;background:#800080;">Brigade)(''')(<\/span>)(\]\])/gi,'$1$3$2$4$6$5$7');

  str = str.replace(/(<small>)(\'\'\'\'\')(I\'m <\/small>\[\[User:No Parking\|No Parking\]\]<small> and  \[\[User talk:No Parking\|I approved this message\]\])(\'\'\'\'\')(<\/small>)/gi,'$2$1$3$5$4');

  str = str.replace(/(\[\[User:JodyB\|)<font color="#FFFFFF" face="Arial Bold">(<span style="background\-color: #0000FF">\'\'\'Jody\'\'\'<\/span><span style="background\-color:#30D5C8">\'\'\'B\'\'\'<\/span>)(\]\]<sub>\[\[User talk:JodyB\|\'\' talk\'\'\]\]<\/sub>)<\/font>/gi,'<span style="font\-family:"\'Arial Bold\';">$1<span style="color:#FFFFFF">$2<\/span>$3<\/span>');

  str = str.replace(/(\[\[User talk:Inkypaws\|<sup>T<)(sup>\]\])/gi,'$1\/$2');

  str = str.replace(/(\'\'\[\[User:JL 09\|<span style="text\-shadow:silver 0.3em 0.3em 0.1em;color:#0070FF;cursor:move;">JL 09)(\]\]\'\')(<\/span>)/gi,'$1$3$2');

  str = str.replace(/\'\'\'<font color="titanic" face="book antiqua" size="2">\[\[User:Brambleberry of RiverClan\|Brambleberry\]\]\'\'\' <sup>\'\'\' ☾\[\[User talk:Brambleberry of RiverClan\|of RC\]\]☽\'\'\'<\/sup><\/font>/gi, '\'\'\'<span style="color:#08a3c2; font\-family:\'book antiqua\'; font\-size:small">\[\[User:Brambleberry of RiverClan\|<span style="color:#08a3c2;">Brambleberry<\/span>\]\] <sup>☾\[\[User talk:Brambleberry of RiverClan\|<span style="color:#08a3c2;">of RC<\/span>\]\]☽<\/sup><\/span>\'\'\'');

  str = str.replace(/<font color="Black">(\[\[User talk:Anthony\.bradbury\|)("talk")(\]\])<\/font>/gi,'$1<span style="color:Black">$2<\/span>$3');

  str = str.replace(/(\[\[User:DeltaQuad\|<font color="green">DQ )(<font color="red"> [a-z ]+)(\]\]\[\[User_Talk:DeltaQuad\|)<font color="blue"> \(ʞlɐʇ\) (\]\])<\/font><\/font><\/font>/gi,'$1<\/font>$2<\/font>$3<span style="color:blue"> \(ʞlɐʇ\) <\/span>$4');

  str = str.replace(/(\[\[User:DeltaQuad\|<font color="green">DQ)(\]\]\[\[User_Talk:DeltaQuad\|)<font color="blue"> \(ʞlɐʇ\) (\]\])<\/font><\/font>/gi,'$1<\/font>$2<span style="color:blue"> \(ʞlɐʇ\) <\/span>$3');

  str = str.replace(/(\[\[User:Aranda56\|JAranda\]\])\'\' \| (\[\[User talk:Aranda56\|[a-z ]+\]\] )/gi,'$1 &#124; $2');

  str = str.replace(/(\[\[User:ShepBot\|<span style="color:green;">\'\'\'§hepBot\'\'\'<\/span>\]\])(''')(&nbsp;<small>)(\(\[\[User talk:ShepBot\|<span style="color:red;">Disable<\/span>\]\]\)\'\'\'<\/small>)/gi,'$1$3$2$4');

  str = str.replace(/(Host\+checkin}} )<\/span> /gi,'$1');

  str = str.replace(/(\|<span style="color:blue;"><sup>Walkie\-talkie)(<\/span>\]\])(<\/sup>)/gi,'$1$3$2');

  str = str.replace(/(<b>\[\[User:MarcusBritish\|)<font color="(#003399">Ma<span style="color:#CC0000;">&reg;&copy;<\/span>usBr<span style="color:#CC0000;">iti<\/span>sh)<\/font>\'\'\'(\]\]&nbsp;<sup>\[<\/sup><sup>\[\[User talk:MarcusBritish\|talk\]\]\]<\/sup><\/b>)/gi,'$1<span style="color:$2<\/span>$3');

  str = str.replace(/(\[\[User:Doh5678\|<big>\'\'\'D)(<\/big>oh5678)(\'\'\')(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User_talk:Biblioworm\|<span style="color:#6F4E37">worm)(\]\]\'\'\'\'\')(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(<sup>\(talk to me\))(<\/span>)(<\/sup>)/gi,'$1$3$2');

  str = str.replace(/(<sup>)(\'\')(\[\[User talk:Dibbydib\|<span style="color:#117f00;">[a-z]+<\/span>\]\]<\/sup><span style="color:#117f00;"> or <\/span><sub>\[\[Special:Contributions\/Dibbydib\|<span style="color:#117f00;">snoop<\/span>\]\])(\'\')(<\/sub>)/gi,'$2$1$3$5$4');

  str = str.replace(/(\|<sub>PC Load Letter)(\]\])(<\/sub>)/gi,'$1$3$2');

  str = str.replace(/(\'\'\'<span style="text\-shadow:#808080 0.2em 0.2em 0.2em">\[\[User:Mr RD\|<span style="font\-size:medium;"><span style="color:blue;font\-family:Comic Sans MS">Mr <span style="color:green;">RD<\/span><\/span><\/span>\]\])(\'\'\')(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Steelerfan\-94\|\'\'\'<span style="background:Black;color:Yellow">SteelersFan)(\'\'\'\]\]\[\[User talk:Steelerfan\-94\|\'\'\'<span style="background:Black;color:Yellow">94)(\'\'\'\]\])/gi,'$1<\/span>$2<\/span>$3');
  str = str.replace(/(\[\[User:Steelerfan\-94\|<span style="color:black">SteelersFan\-)(\]\]\[\[User talk:Steelerfan\-94\|<span style="color:gold">9)(\]\])/gi,'$1<\/span>$2<\/span>$3');

  str = str.replace(/(\[\[User:lewisskinner\|\'\'\'<font color="red">L.J.Skinner)(\'\'\')(<\/font>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\|\'\'\'<span style="color:red;">L.J.Skinner)(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\|<span style="color:#33CCCC;"><sub>&isin;)(<\/span>)(<\/sub>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(<span style="color:[#\da-z]+;">Uidhir)(\'\'\')(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\|<font color="00DD00">\'\'\'The Sunshine \'\'\')(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(<sub>\[\[Special:Contributions\/PhoenixMourning\|contribs\]\])(\'\'\')(<\/sub>)/gi,'$1$3$2');

  str = str.replace(/(>snore)(\]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\[\[Special:Contributions\/Namcokid47\|<span style="color: #0073e6">\(Contribs\))(\]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\[\[Wikipedia:Esperanza\|<span style="color:green;cursor:crosshair;">e)(\]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Mastrchf91\|<span style="font\-family:Lucida Calligraphy, sans\-serif; color:DarkBlue">Mastrchf)(\]\] \(<sup>\[\[User talk:Mastrchf91\|t\]\]<\/sup>\/<sub>\[\[Special:Contributions\/Mastrchf91\|c\]\]<\/sub>\))(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:1*tomica\|)(<span style="text\-shadow:#BBBBBB 0\.1em 0\.1em 0\.1em; class=texhtml">)(<span style="color:darkgreen;">\'\'\'Tomica\'\'\'<\/span>\]\] \[\[User talk:1*tomica\|<span style="color:darkgreen;">\(talk\)<\/span>)(<\/span>)(\]\])/gi,'$2$1$3$5$4');

  str = str.replace(/<font=3> (Thanks for your support, my \[\[Wikipedia:Requests for adminship\/Victuallers\|request for adminship\]\] passed 60\/0\/0 on Monday\! )<\/font>/gi,'$1');

  str = str.replace(/(\[\[User:Timbouctou\|)\'\'(<span style=\'font\-family: Georgia, serif; color:#639;\'><em>Timbouctou<\/em><\/span>\]\] \(\[\[User talk:Timbouctou\|)\'\'(<span style=\'font\-family: Georgia, serif; color:#639;\'><em>talk<\/em><\/span>\]\])/gi,'$1$2$3');
  str = str.replace(/(\[\[User:Timbouctou\|)\'\'(<span style=\'font\-family: Georgia, serif; color:#639;\'><em>Timbouctou<\/em><\/span>\]\] )(\d)/gi,'$1$2$3');

  str = str.replace(/(<small> *)(\[\[User talk:NJA\|<em style="color:#63D1F4">)(\'\'\')(\(t\/<\/em>\]\]\[\[Special:Contributions\/NJA\|<em style="color:#63D1F4">c\)<\/em>\]\]\'\'\'<\/small>)/gi,'$1$3$2$4');

  str = str.replace(/(>Tvaughn05)(\]\])(<\/span>)/gi,'$1$3$2');
  str = str.replace(/(><sub>e<\/sub>)(\]\])(<\/span>)/gi,'$1$3$2');
  str = str.replace(/(\|<span style="color:#007700;cursor:crosshair;"><sub><em><small>\(Contribs\)<\/small><\/em><\/sub>)(\]\])(<\/span>)/gi,'$1$3$2');
  str = str.replace(/(\|<span style="color:green;cursor:crosshair;">e)(\]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(> Ѕandahl)(\'\'\'\'\')(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(>Outriggr)(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(>OLAJUWON)(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/<font (style="color:#5A3696;">&hearts;\[\[User:Purplefeltangel\|<font style="color:#5A3696;">purplefeltangel<\/font>\]\] <sup> \(\[\[User talk:Purplefeltangel\|<font style="color:#5A3696;">talk<\/font>\]\]\)<\/sup> &hearts; <sup>\(\[\[Special:Contributions\/Purplefeltangel\|<font style="color:#5A3696;">contribs<\/font>\]\]\))<\/font>(<\/sup><\/span>)/gi,'<span $1$2');

  str = str.replace(/(<font color="black">)(\[\[WP:BDC\|)(<b>BIRTHDAY<\/b>COMMITTEE)<\/sub>(\]\])(<\/font>)/gi,'$2<span style="color:black">$3<\/span>$4');
  str = str.replace(/(<font color="black">)(\[\[WP:BDC\|)(Wikipedia Birthday Committee)(\]\])(<\/font>)/gi,'$2<span style="color:black">$3<\/span>$4');
  str = str.replace(/(<font color="blue">)(\[\[WP:BDC\|)(Wikipedia Birthday Committee!!!)(\]\])(<\/font>)/gi,'$2<span style="color:blue">$3<\/span>$4');

  str = str.replace(/<font color="white">(\[\[)([ThanksgivCrtm]+)(\]\])<\/font>/gi,'$1$2\|<span style="color:white">$2<\/span>$3');
  str = str.replace(/<font=3> (Wishing you a<br>"Feliz Navidad and a Happy new Year")<\/font>/gi,'$1');

  str = str.replace(/(<span style="color:[a-z\d#]+">Chequers)(\'\')(<\/span>)/gi,'$1$3$2');
  str = str.replace(/(<span style="color:[a-z\d#]+">Chequers)(\]\]\'\'+)(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\(\[\[User talk:Sabrebd\|talk)(<\/span>)(\]\]\))/gi,'$1$3$2');
  str = str.replace(/(\'\'\'<span style="font.*">\[\[User:Sabrebd\|<span style="color:blue;">SabreBD<\/span>\]\] \(\[\[User talk:Sabrebd\|talk\]\]\)<\/span>) /gi,'$1\'\'\' ');

  str = str.replace(/(\[\[User:GandalftheWise\|<span style="color:blue">Gandalf)(<span style="color:green">the)(<span style="color=red">Wise)(\]\] : \[\[User_talk:GandalftheWise\|<span style="color:blue">Talk )(<span style="color:red">Page )(\]\])/gi,'$1<\/span>$2<\/span>$3<\/span>$4<\/span>$5<\/span>$6');

  //For User:Wireless Keyboard and User:Class I Laser (same user, renamed)
  str = str.replace(/(\[\[User:[a-z ]+\|<span style="color:#0000FF">[a-z ]+ )(<span style="color:green">[a-z ]+)(<span style="color=#FF7F00>[a-z ]+)(\]\])/gi,'$1<\/span>$2<\/span>$3<\/span>$4');
  str = str.replace(/(\[\[User_talk:[a-z ]+\|<sup><span style="color: #FF0000"><i>[a-z ]+!<\/i>)(<\/sup>\]\])/gi,'$1<\/span>$2');
  str = str.replace(/(\[\[Special:Contributions\/[a-z ]+\|<sub><span style="color:#800080"><i>[a-z]+!<\/i>)(<\/sub>\]\])(<\/span>)/gi,'$1$3$2');
  str = str.replace(/(\[\[User:Class I Laser\|<span style="color:#00FFFF">C)(<span style="color: #FF0000">l)(<span style="color:#0000FF">a)(<span style="color:#00FF00">s)(<span style="color:blue">s )(<span style="color:brown">I )(<span style="color:magenta">Laser)(\]\])/gi,'$1<\/span>$2<\/span>$3<\/span>$4<\/span>$5<\/span>$6<\/span>$7<\/span>$8');
  str = str.replace(/(\[\[User_talk:Class I Laser\|<sup><span style="color: #0000FF">\()(<span style="color:#FF0000">t)(<span style="color:#00FF00">a)(<span style="color: #964B00">l)(<span style="color:#FF00FF">k)(<span style="color:)\((#00FFFF">\))(<\/sup>\]\])(<\/span>)/gi,'$1<\/span>$2<\/span>$3<\/span>$4<\/span>$5<\/span>$6$7$9$8');
  str = str.replace(/(\[\[User:Wireless Keyboard\|<span style="color:#00FFFF">Wi)(<span style="color: #FF0000">re)(<span style="color:#0000FF">le)(<span style="color:#00FF00">ss )(<span style="color:blue">Key)(<span style="color:brown">boa)(<span style="color:magenta">rd)(\]\] \[\[User_talk:Wireless Keyboard\|<sup><span style="color: #0000FF">\()(<span style="color:#FF0000">t)(<span style="color:#00FF00">a)(<span style="color: #964B00">l)(<span style="color:#FF00FF">k)(<span style="color:)\((#00FFFF">\))(<\/sup>\]\])<\/span>/gi,'$1<\/span>$2<\/span>$3<\/span>$4<\/span>$5<\/span>$6<\/span>$7<\/span>$8<\/span>$9<\/span>$10<\/span>$11<\/span>$12<\/span>$13$14<\/span>$15');

  str = str.replace(/(\| quote *= *You may also wish to consider using a Wizard to help you create articles. See the \[\[Wikipedia:Article wizard[ 2\.0]*\|Article Wizard\]\]\.)\'\'\'\'\'/gi,'$1');
  str = str.replace(/(\| quote *= *A Wizard is available to walk you through these steps. See the \[\[Wikipedia:Article wizard[ 2\.0]*\|Article Wizard\]\]\.)\'\'\'\'\'/gi,'$1');

  str = str.replace(/(<font face="tahoma" color="SteelBlue">)(\[\[User talk:Ipodnano05\|<sup>)(\'\'\'leave@message\'\'\')(<\/sup>\]\])(<\/font>)/gi,'$2$1$3$5$4');

  str = str.replace(/<font color="red">\[\[User_talk:SlimVirgin\|talk\|\]\]<\/font>/gi,'<font color="red">\[\[User_talk:SlimVirgin\|talk\]\]<\/font>');

  str = str.replace(/(\[\[User:Harland1\|<span style="font\-family:Zapfino, sans\-serif; color:DarkRed">Harland1)(\]\] \(<sup>\[\[User talk:Harland1\|t\]\]<\/sup>\/<sub>\[\[Special:Contributions\/Harland1\|c\]\]<\/sub>\))(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(<sup>\[\[User talk:Wesley Wolf\|Talk\]\])(\'\'\' )(<\/sup>)(<\/span>)/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User talk:Pigman\|<sup><font color="red">man)(\]\])(<\/font><\/sup>)/gi,'$1$3$2');

  str = str.replace(/(\|<b><span style="color:#005080;">edits<\/span>)(\]\])(<\/b>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Dockingman\|<span style="color:#6699cc">docking<span style="color:#cc0000">man)(\]\])(<\/span><\/span>)/gi,'$1$3$2');

  str = str.replace(/(\|<b style="color:#008000">\'\'<sup>\(talk\)<\/sup>)(<\/b>)(\'\')(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(<span style="font\-family:Tahoma;">)(\'\'\')(\[\[User:Fridae\'sDoom\|<font color=red>Ғяіᴆaз\'§Đøøм<\/font>\]\]<\/span> • <span style="font\-family:Trebuchet MS;font\-variant:small\-caps;">\[\[User talk:Fridae\'sDoom\|<span style="color:grey;">Champagne\?<\/span>\]\] • \d+:\d+[ap]m •)(\'\'\')(<\/span>)/gi,'$2$1$3$5$4');
  str = str.replace(/(<span style="font\-family:Tahoma;">)(\'\'\')(\[\[User:Fridae\'sDoom\|<span style="color:red">Ғяіᴆaз\'§Đøøм<\/span>\]\]<\/span> • <span style="font\-family:Trebuchet MS; *font\-variant:small\-caps;[:a-z;]+">\[\[User talk:Fridae\'sDoom\|<span style="color:grey;">Champagne\?<\/span>\]\] • \d+:\d+[ap]m •)(\'\'\')(<\/span>)/gi,'$2$1$3$5$4');
  str = str.replace(/(\[\[AEST\|<font color="grey">\d+:\d+[ap]m)(\]\] •\'\'\'<\/span>)/gi,'$1<\/font>$2');  // tail end of Fridae'sDoom sig

  str = str.replace(/<font color="*red"*>Ғяіᴆaз\'§Đøøм<\/font>/gi,'<span style="color:red">Ғяіᴆaз\'§Đøøм<\/span>');

  str = str.replace(/(\[\[User:KMFDM Fan\|<span style="background:#000000;color:#[A-F\d]+">\'\'\'KMFDM FAN\'\'\')(\]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:AutomaticStrikeout\|)(<span style="color:[#a-z\d ]+">)(\'\'\')(Automatic<\/span><span style="color:[#a-z\d ]+">\'\'Strikeout\'\')(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4$6$5$7');

  str = str.replace(/(\[\[Special:Contributions\/AutomaticStrikeout\|<span style="color:[#a-z\d ]+">C)(\]\])/gi,'$1</span>$2');

  str = str.replace(/(\[\[User:RickK\|Rick\]\]\'\'\'\[\[User talk:RickK\|K)(\'\'\')(\]\])( *)/gi,'$1$3$2$4');

  str = str.replace(/(\|<su[bp]><span style="color:black;"><small>\'\'\'503\'\'\'<\/small>)(<\/su[bp]>)(<\/span>)/gi,'$1$3$2');
  str = str.replace(/(\'\'\'\'\'<small><span style.*User:Truco.*o<\/span>)(<\/small>)(<\/span>)(\'\'\'\'\')/gi,'$1$3$2$4');
  str = str.replace(/(\[\[User talk:Truco\|<sub>)(<font color="black">)(<small>)(\'\'\'503\'\'\')(<\/small>)(<\/sub>)(<\/font>)(\]\])/gi,'$1$3$2$4$7$5$6$8');

  str = str.replace(/(\[\[User:Tiddly Tom\|)(<span style="color:#7FFF00;background:#483C32;">)(\'\'\')(Tiddly<\/span><span style="color:#483C32;background:#483C32;">\-<\/span><span style="color:#DFFF00;background:#483C32;">Tom)(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4$6$5$7');

  str = str.replace(/(\[\[User:Save Us.Y2J\|<span style="color:blue">Save)(\]\] \[\[User talk:Save Us.Y2J\|<span style="color:green">Us.)(\]\])/gi,'$1<\/span>$2<\/span>$3');

  str = str.replace(/(<sup><small><b>\[\[User_talk:Evilphoenix\|Burn\!\]\]<\/b>)(<\/sup>)(<\/small>)/gi,'$1$3$2');

  str = str.replace(/(\|<span style= "color:green">Godric)(]\])(<\/span>)/gi,'$1$3$2');
  str = str.replace(/(\|<span style= "color:green">\'\'Winged Blades\'\')(]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/(\'\'\'\[\[User:HindWIKI\|HindWiki\]\]<sup>\[\[User talk:HindWIKI\|<span style="font\-size: x\-small;">Connect<\/span>\]\])(\'\'\')(<\/sup>)/gi,'$1$3$2');

  //Cyberpower and C678 and similar
  str = str.replace(/(\|<span style="color:[a-z0-9#]+;font\-family:[a-z ]+">[a-z \d]+)(\]\])/gi,'$1<\/span>$2');
  str = str.replace(/(\|<span style="color:[a-z0-9#]+;font\-family:[a-z ]+">[a-z \d]+<span style="color:red">power)(\]\])/gi,'$1<\/span><\/span>$2');
  str = str.replace(/(\|<sup style="[a-z\-:\d\.; ]*color:[a-z0-9#]+;font\-family:[a-z ]+">[a-z !\d]+)(\]\])/gi,'$1<\/sup>$2');
  str = str.replace(/(\[\[User talk:C678\|<span style="color:[a-z0-9#]+">Chat)(\]\])/gi,'$1<\/span>$2');

  str = str.replace(/(\[\[User:Lil\-unique1\|<span style="color:#002a2a">\'\'\'Lil\-<\/span><span style="color:#0c6e70">Unique1\'\'\'\]\]<\/span>)/gi,'(\[\[User:Lil\-unique1\|\'\'\'<span style="color:#002a2a">Lil\-<\/span><span style="color:#0c6e70">Unique1<\/span>\'\'\'\]\])');

  str = str.replace(/(\|<font face="comic sans ms" color="#006400">James086)(\]\])(<\/font>)/gi,'$1$3$2');
  str = str.replace(/(\|<font color="navy">Talk)(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(002bb8">count<\/span>\]\))(<\/span>)(<\/sup>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Merkinsmum\|<b><font color="#FF1493">Merkin\'s)(\]\])(<\/font><\/b>)( +\[\[User talk:Merkinsmum\|<b><font color="#FF1493">mum)(\]\])(<\/font><\/b>)/gi,'$1$3$2$4$6$5');

  str = str.replace(/(<font color=green>\)\-\-\-\^\-\-)(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Asics\|<span style="font-family:impact;"><span style="background:black;color:aqua">Asics <\/span>)(\]\])/g,'$1<\/span>$2');
  str = str.replace(/(\[\[Wikipedia:Editor review\/Asics\|<font color="Black">Editor review\!)(\]\])(<\/font>)/g,'$1$3$2');

  str = str.replace(/(\|<font color="DarkBlue">[TR]{1})(\]\]\'\'\')(<\/font>)/g,'$1$3$2');
  str = str.replace(/(\|<font color="Blue">[hS]{1})(\]\]\'\'\')(<\/font>)/g,'$1$3$2');
  str = str.replace(/(\|<font color="LightBlue">[eJ]{1})(\]\]\'\'\')(<\/font>)/g,'$1$3$2');

  str = str.replace(/(<font color="black">All)(\]\]\'\'\')(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(\|<font color="darkgreen">ESP)(\]\])(<\/font>)/gi,'$1$3$2');
  str = str.replace(/(\|<font color="darkred">ESP)(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(<font color="#333333">ecir)(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Milk\'s Favorite Cookie\|<font face="Snap ITC" size="3px" color="#4D0100">\'\'\'M\'\'\'<\/font>)\'\'\'\'\'(\]\])/gi,'$1$2');

  str = str.replace(/(\[\[User:Milk\'s Favorite Cookie\|<font face="Modern No. 20" size="3px" color="#4D0100">ilks<\/font>)\'\'\'\'\'(\]\])/gi,'$1$2');

  str = str.replace(/(\[\[User talk:Milk\'s Favorite Cookie\|<font face="Snap ITC" size="3px" color="#4D0100">\'\'\'F\'\'\'<\/font>)\'\'\'\'\'(\]\])/gi,'$1$2');

  str = str.replace(/(\[\[User talk:Milk's Favorite Cookie\|\'<font face="Modern No. 20" size="3px" color="#4D0100">avorite<\/font>)\'\'\'\'\'(\]\])/gi,'$1$2'); 

  str = str.replace(/(\[\[Special:Contributions\/Milk\'s Favorite Cookie\|)\'\'\'\'\'(<font face="Snap ITC" size="3px" color="#4D0100">\'\'\'C\'\'\'<\/font>\]\])/gi,'$1$2');

  str = str.replace(/(\[\[Special:Contributions\/Milk\'s Favorite Cookie\|\'\'\'\'\'<font face="Modern No. 20" size="3px" color="#4D0100">ookie<\/font>)(\]\])/gi,'$1\'\'\'\'\'$2');

  str = str.replace(/> \'\'\'Relisting due to insufficient votes\.<\/span>\'\'\'/gi,'> \'\'\'Relisting due to insufficient votes\.\'\'\'<\/span>');

  str = str.replace(/>\* \'\'\'Relisting due to insufficient votes\.<\/span>\'\'\'/gi,'>\* \'\'\'Relisting due to insufficient votes\.\'\'\'<\/span>');

  str = str.replace(/\'\'\'\[\[User:Yellow Dingo\|<b style="color:#FFCC33">Yellow<\/b> <b style="color:brown">Dingo\]\]\'\'\'&#160;\[\[User talk:Yellow Dingo\|<b style="color:BLUE">\(talk\)<\/b>\]\] ([\d:, a-z]+ \(UTC\))<\/b>/gi,'\'\'\'\[\[User:Yellow Dingo\|<span style="color:#FFCC33">Yellow<\/span> <span style="color:brown">Dingo<\/span>\]\]&#160;\[\[User talk:Yellow Dingo\|<span style="color:BLUE">\(talk\)<\/span>\]\]\'\'\' $1');

  str = str.replace(/\'\'\'\[\[User:Yellow Dingo\|<b style="color:#FFCC33">Yellow<\/b> <b style="color:brown">Dingo\]\]\'\'\'&#160;\[\[User talk:Yellow Dingo\|<b style="color:BLUE">\(talk\)<\/b>\]\] ([\d:, a-z]+ \(UTC\))<\/small><\/b>/gi,'\'\'\'\[\[User:Yellow Dingo\|<span style="color:#FFCC33">Yellow<\/span> <span style="color:brown">Dingo<\/span>\]\]&#160;\[\[User talk:Yellow Dingo\|<span style="color:BLUE">\(talk\)<\/span>\]\]\'\'\' $1<\/small>');

  str = str.replace(/\[\[User:Mitth\'raw\'nuruodo\|<font face=verdana><em><font color=blue>Chiss <font color=red>Boy<\/em><\/font><\/font><\/font><\/font>\]\]/gi, '\[\[User:Mitth\'raw\'nuruodo\|<em style="font-family:verdana"><span style="color:blue">Chiss<\/span> <span style="color:red">Boy<\/span><\/em>\]\]');

  str = str.replace(/(\[\[User:Aycliffe\|)(<span style="color:White;">)(\'\'\')(ayc<\/span><span style="color:Gray;">li<\/span><span style="color:White;">ffe)(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4$6$5$7');

  str = str.replace(/(\[\[User:1redrun\|)(<span style="color:Black;">)(\'\'\')(1<\/span><span style="color:Red;">redrun)(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4$6$5$7');

  str = str.replace(/(<span style="font-size:80%;">Q5G7FviTHBac3dx8HhdNYwDVstR)(\]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/\[\[User:Mitth\'raw\'nuruodo\|<font face=([a-z]+)><em><font color=blue><b>Chiss <font color=red>Boy<\/b><\/em><\/font><\/font><\/font><\/font>\]\]/gi, '\[\[User:Mitth\'raw\'nuruodo\|<span style="font\-family:$1"><em><b><font color=blue>Chiss <\/font><font color=red>Boy<\/font><\/b><\/em><\/span>\]\]');

  str = str.replace(/(\[\[User_talk:Ingoolemo\|<span style="color:blue;"><sup>talk)(<\/span>)(<\/sup>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User talk:Heironymous Rowe\|\'\'\'\<span style\=\"color:darkBlue\"\>iro)(\'\'\')(\<\/span\>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/( \[\[User:Diligent Terrier\|Diligent\]\]\[\[User[ talk]*:Diligent Terrier\|\<span style\=\"color:orange\"\>\'\'\'Terrier\'\'\'\<\/span\>\]\] \<small\>\[\[User:Diligent Terrier\/Autographs\|\(and friends\)\]\]\<\/small\>)\<\/font\> /gi,'$1 ');
  str = str.replace(/( \[\[User talk:Diligent Terrier\|<span style=color:Gray>\'\'\'<small>\[talk\]<\/small>\'\'\')(\]\])(<\/span>)/gi,'$1$3$2');

  str = str.replace(/\[\[WP:IKNOWBEST\|<font color="black">Y\'\'\'&#124;\]\]\'\'\'<\/font>/gi,'\[\[WP:IKNOWBEST\|<span style="color:black">Y\'\'\'&#124;\'\'\'<\/span>\]\]');

  str = str.replace(/\[\[User:Xp54321\|<font color="0070FF">\'\'\'Xp54321\'\'\'\]\]<\/font>/gi,'\[\[User:Xp54321\|<span style="color:#0070FF">\'\'\'Xp54321\'\'\'<\/span>\]\]');

  str = str.replace(/\[\[User:Fosse8\|<font color="gold"><b style="background:#000066">✤ Fosse 8 ✤<\/b>\]\]<\/font>/gi,'\[\[User:Fosse8\|<b style="background:#000066;color:gold;">✤ Fosse 8 ✤<\/b>\]\]');

  str = str.replace(/(\[\[User:SRX\|<span style="color:black;">S<\/span>)<\/font>(\]\])/gi,'$1$2');
  str = str.replace(/(\[\[User:SRX\/Guestbook\|<span style="color:black;">X<\/span>)<\/font>(\]\])/gi,'$1$2');

  str = str.replace(/(\[\[User:Dlohcierekim\|<span style="color:#009500;">  Dloh<\/span>\]\]\[\[User_talk:Dlohcierekim\|<span style="color:#950095;">cierekim)\'\'\'( <\/span>\]\])/gi,'$1$2');

  str = str.replace(/(\[\[User_talk:Dlohcierekim\|)  (\'\'\')(Cheers,<span style="color:#009500;"> :\) Dloh<\/span><span style="color:#950095;">cierekim)(\'\'\') (<\/span>\]\])/gi,' $2$1$3$5$2 ');

  str = str.replace(/(<sup>\'\'\'\[\[User_talk:It Is Me Here\|<font color="#CC6600;">t<\/font>\]\] \/ \[\[Special:Contributions\/It Is Me Here\|<font color="#CC6600;">c<\/font>\]\])(<\/sup>)(\'\'\')/gi,'$1$3$2');
  str = str.replace(/(<sup>\'\'\'\[\[User_talk:It Is Me Here\|<span style="color:#CC6600;">t<\/span>\]\] \/ \[\[Special:Contributions\/It Is Me Here\|<span style="color:#CC6600;">c<\/span>\]\])(<\/sup>)(\'\'\')/gi,'$1$3$2');

  str = str.replace(/(\[\[user:Eagle 101\|<font color="green">\'\'\'Eagle\'\'\'<\/font><font color="red">\'\'\'101\'\'\')(\]\] )(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User talk:Nixeagle\|<font color="red">eagle)(\]\])(<\/font>)/gi,'$1$3$2');

  str = str.replace(/(<span style="color:green"> )(\'\'\')(\[\[User:CapMan07008\|\'\'p\'\'\]\]<\/span>)/gi,'$2$1$3');

  str = str.replace(/(\[\[User talk:Ultimus\|)(<span style="color:red;">)\'\'\'(UlT<\/span><span style="color:green;">i<\/span><span style="color:blue;">MuS)\'\'\'(<\/span>)(\]\])/gi,'$1\'\'\'$2$3$4\'\'\'$5');

  str = str.replace(/(<span style="color:red;">)(\'\'\')(UlT<\/span><span style="color:green;">i<\/span><span style="color:blue;">MuS)\'\'\'(<\/span>)/gi,'$2$1$3$4$2');

  str = str.replace(/<font color="blue">(\[\[WP:BDC\|)(Wikipedia Birthday Committee\!)(\]\])<\/font>/gi,'$1<span style="color:blue">$2</span>$3');

  str = str.replace(/\|(\<span style\=\"color:[#a-z\d ]+;\"\>)\'\'\'(La\<\/span\>[\&nbsp; ]+\<span style\=\"color:[#a-z\d ]+;\"\>Pianista)\'\'\'(\<\/span\>)\]\]/gi,'\|\'\'\'$1$2$3\'\'\'\]\]');

  str = str.replace(/(\[\[User:Minor4th\|)(\<b span style\=\"color:#000000;font\-size:110%;\"\>)(\<span style\=\"font\-family:papyrus;\"\>)(Minor\<\/b\>\<b span style\=\"color:#ff0000;font\-size:80%;\"\>4th)(\<\/span\>)(\<\/b\>)(\]\])/g,'$1$3$2$4$6$5$7');

  str = str.replace(/(\|\<big\>\<span style\=\"color:#900;\"\>\'\'\'\'\'S\'\'\'\'\')(\<\/big\>)(\<\/span\>)(mith\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\|\<big\>\<span style\=\"color:#900;\"\>\'\'\'\'\'D\'\'\'\'\')(\<\/big\>)(\<\/span\>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\<big\>\<span style\=\"color:#900;\"\>\'\'\'\'\'S\'\'\'\'\')(\<\/big\>\<\/big\>\<\/big\>)(\<\/span\>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\<big\>\<span style\=\"color:#900;\"\>\'\'\'\'\'D\'\'\'\'\')(\<\/big\>\<\/big\>\<\/big\>)(\<\/span\>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\|\<big\>\<span style\=\"color:#33FFFF;\"\>\'\'\'\'\'M\'\'\'\'\')(\<\/big\>)(\<\/span\>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\|\<big\>\<span style\=\"color:#F88017;\"\>\'\'\'\'\'M\'\'\'\'\')(\<\/big\>)(\<\/span\>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\|\<big\>\<span style\=\"color:#CCCCCC;\"\>\'\'\'\'\'F\'\'\'\'\')(\<\/big\>)(\<\/span\>)(ox\]\])/gi,'$1$3$2$4');

  str = str.replace(/(">''Dark)( <span)/gi,'$1\'\'$2');

  str = str.replace(/(\"\>\'\'\'Mr)(\<\/span\>\<span style\=\"color:Green;\"\>\'\'\'WooHoo\'\'\'\<)/gi,'$1\'\'\'$2');

  str = str.replace(/(Jacobite\<\/span\>\]\])(\<\/span\>\<span style\=\"font\-family:Courier New;\"\>)(\'\'\')/gi,'$1$3$2');

//overbroad
//  str = str.replace(/(\|\<span style[^\]\<]+)(\]\]\)*)(\<\/span\>)/gi,'$1$3$2');

  str = str.replace(/(This drive was organized by \[\[User:GrooveDog\|GrooveDog\]\] in an attempt to terminate that nasty backlog\.)\<\/sup\>\<\/font\>\./gi,'$1');
  str = str.replace(/(GrooveDog)\<\/sup\>\<\/font\>\./gi,'$1');

  str = str.replace(/(\"\>\'\'\'W\'\'\'eb)\'\'\'(\<\/)/gi,'$1$2');

  str = str.replace(/(\(\[\[User talk:Alinnisawest\|\<font color\=\"#cf0021\"\>\'\'\'extermination requests here)(\]\])(\'\'\'\<\/font\>)/gi,'$1$3$2');

  str = str.replace(/(\|\<font color\=\"\#66666\"\>\<sup\>Pacific\<\/sup\>)(\]\] *\[\[Special:Contributions\/Yellow Evan\|\<sup\>Hurricane\<\/sup\>)(\<\/font\>)(\]\])/gi,'$1$3$2$4');
  
  str = str.replace(/(\'\'\'\'\')(\<span style\=\"font\-family:Georgia,arial\"\>)(Vic Vipr\'\'\'\'\' \<small\>\<sup\>\[\[User_talk:Vic_Vipr\|\'\'T\'\'\]\]\<\/sup\>\<sub\>\[\[Special:Contributions\/Vic_Vipr\|\'\'C\'\'\]\]\<\/sub\>\<\/small\>\<\/span\>)/gi,'$2$1$3');

  str = str.replace(/(\|\'\'\'\<span style\=\"color:FireBrick;\"\>Nolelover)(\'\'\')(\<\/span\>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\|\'\'\'\<span style\=\"color:Gold\"\>\<sup\>[a-z \'\!]+\<\/sup\>)(\'\'\')(\<\/span\>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\[\[User talk:Nolelover\|\'\'\'<span style="font size 15;border:#AAAACC 2px inset;color:maroon;background:Gold">lover)(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4');
 
  str = str.replace(/(>Experiment)(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(>Ford)(\'\'\')(<\/span>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\|\'\'\'\<span style\=\"color:RGB\(0,71,171\)\"\>Shores)(\'\'\')(\<\/span\>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\|\'\'\'\<span style\=\"color:blue;font\-family:Times New Roman;font\-size:80%;\"\>SLAM)(\'\'\')(\<\/span\>)(\]\])/gi,'$1$3$2$4');
  str = str.replace(/(\|\'\'\'\<span style\=\"color:darkBlue\"\>Slam)(\'\'\')(\<\/span\>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\|)(\<span style\=\"color:red;"\>)(\'\'\')(Aaron\<\/span\> \<span style\=\"color:blue;\"\>north\<\/span\>\'\'\'\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User:Optimist on the run\|\'\'\'\<span style\=\"color:#A00000\"\>optimist)(\'\'\')(\<\/span\>)(\]\] on the \[\[User Talk:Optimist on the run\|\'\'\<span style\=\"color:#00A000\"\>run\!)(\'\')(\<\/span\>)(\]\])/gi,'$1$3$2$4$6$5$7');

  str = str.replace(/(\[\[User:Optimist on the run\|\'\'\'\<span style\=\"color:#A00000\"\>optimist)(\'\'\')(\<\/span\>)(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User Talk:Optimist on the run\|\'\'\<span style\=\"color:#00A000\"\>run! )(\'\')(\<\/span\> )(\]\])/gi,'$1$3$2$4');

  str = str.replace(/(\[\[User:Arman Cagle\|)\<font color\=\"191970\"\>(\'\'\'Arman Cagle\'\'\')\]\]\<\/font\>/gi,'$1\<span style\=\"color:#191970\"\>$2\<\/span\>\]\]');

  str = str.replace(/(\<sup\>\[\[User talk:Djathinkimacowboy\|\<[fontspan]+ style\=\"color:#00013F*;*\"\>[\'a-z\?\! ]+\<\/[fontspan]+\>)(\<\/sup\>)(\]\])/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Saedon\|\<font color\=\"#000000\"\>S\<strong\>Æ\<\/strong\>don)(\]\]\<sup\>\[\[User talk:Saedon\|talk\]\]\<\/sup\>)(\<\/font\>)/gi,'$1$3$2');

  str = str.replace(/(\[\[User:Saedon\|\<font color\=\"#000000\"\>Sædon)(\]\]\<sup\>\[\[User talk:Saedon\|talk\]\]\<\/sup\>)(\<\/font\>)/gi,'$1$3$2');


  str = str.replace(/\>\'\'\'\<big\>Zac\'\'\' \<\/big\>/gi,'\>\'\'\'\<big\>Zac \<\/big\>\'\'\'');

  str = str.replace(/(monde ♥)(\]\])(\<\/font\>\<\/b\>\<\/span\>)/gi,'$1$3$2');

  str = str.replace(/\<span style\=\"background:#00CCCC\"\>\'\'\'\[\[User:Adabow\|\<font face\=\"tempus sans itc\" color\=\"#FF0000\"\>Adabow\]\]\<\/font\>\<\/span\>\<span style\=\"background:#FF6666\"\>\<font face\=\"monospace\" color\=\"#330099\"\>\<small\>\(\[\[User talk:Adabow\|complain\]\]\)\'\'\'\<\/small\>\<\/font\>\<\/span\>/gi,'\'\'\'\<span style\=\"background:#00CCCC\"\>\[\[User:Adabow\|\<font face\=\"tempus sans itc\" color\=\"#FF0000\"\>Adabow\<\/font\>\]\]\<\/span\>\<span style\=\"background:#FF6666\"\>\<small\>\(\[\[User talk:Adabow\|\<font face\=\"monospace\" color\=\"#330099\"\>complain\<\/font\>\]\]\)\<\/small\>\<\/span\>\'\'\'');

  str = str.replace(/\>\'\'\'\&nbsp;\'\'\'Glenfarclas\'\'\'\&nbsp;\<\/span\>\]\]\'\'\'/gi,'\>\&nbsp;\'\'\'Glenfarclas\'\'\'\&nbsp;\<\/span\>\]\]');

  str = str.replace(/(\[\[User_talk:IMatthew\|\<span style\=\"font\-family:Century Gothic;color:#007BA7\"\>\<sup\>talk\<\/sup\>)\]\]/gi,'$1\<\/span\>\]\]');
  str = str.replace(/(\[\[User:iMatthew\|<span style="color:[#\da-z]+">iMa)(<span style="color:[#\da-z]+">tth)(<span style="color:[#\da-z]+">ew<\/span>\]\])/gi,'$1<\/span>$2<\/span>$3');
  str = str.replace(/(<sub>\[\[User talk:IMatthew\|<span style="color:red">T\.)(\]\]\[\[Special:Contributions\/iMatthew\|<span style="color:blue">C\.)(\]\]<\/sub>)/gi,'$1<\/span>$2<\/span>$3');

  str = str.replace(/\[\[User:Zenlax\|\<font\scolor\=\"ForestGreen\"\>\'\'\'\'\'Z\'\'\'\'\'\<small\>enlax\<\/small\>\'\'\'\<\/font\>\]\]/gi,'\[\[User:Zenlax\|\<span style\=\"color:ForestGreen\"\>\'\'\'\'\'Z\'\'\'\'\'\<small\>enlax\<\/small\>\<\/span\>\]\]');

  str = str.replace(/(\'\'\')(\<font face\=jokerman\>)(\[\[User:Feedback\|\<span style\=\"color:DarkBlue;\"\>\'\'Lex\'\'\<\/span\>\]\]\'\'\' )/gi,'$2$1$3');

  str = str.replace(/\[\[User:Sting_au\|\<b\>\<font color\=\"green\"\>Sting_au\]\]  \[\[User talk:Sting_au\|\<\/font\>\<font color\=\"gold\"\>Talk\]\]\<\/font\>\<\/b\>/gi,'\<b\>\[\[User:Sting_au\|\<font color\=\"green\"\>Sting_au\<\/font\>\]\]  \[\[User talk:Sting_au\|\<font color\=\"gold\"\>Talk\<\/font\>\]\]\<\/b\>');


  str = str.replace(/\<font( style\=\"font\-family:sans\-serif;color:black;\"\> \<span style\=\"text\-shadow:#0099cc 0\.12em 0\.12em 0\.12em; class\=texhtml\"\> +\'\'\'\'\'\[\[User:Sharktopus\|Sharktopus\]\]\'\'\'\'\'\<\/span\> \[\[user talk: Sharktopus\|\<sup\>talk\<\/sup\>)\<\/font\>\]\]/gi,'\<span$1\]\]\<\/span\>');

  str = str.replace(/(\<span style\=\"color:orange;font\-family:Calibri\"\>C\<)(span\>)/gi,'$1\/$2');

  str = str.replace(/(\<span style\=\"font\-family:Trebuchet MS\"\>)\'\'(\<span style\=\"color:#[a-z\d]+;\"\>)\'\'(\~)\'\'(\<\/span\>\'\'\')\'\'/gi,'$1$2$3$4');

  str = str.replace(/(LOTRrules\|\'\'\'\<span style\=\"color:[a-z]+;\"\>)\'\'\'(Contribs)\'\'\'(\<\/span\>\'\'\'\]\])/gi,'$1$2$3');

  str = str.replace(/(\'\'\'\'\')\<span style\=\"font\-size:medium;\"\>\<\/font\>(\[\[User:SRX.*\]\]\'\'\')\'\'/gi,'$1$2');

  str = str.replace(/(\<span style\=\"color:\#009933;\"\>name)(\<\/sup\>)(\<\/span\>)/gi,'$1$3$2');

  str = str.replace(/(\<span style\=\"font\-family\:Lucida Grande;\"\>)( \[\[User\:Neko\-chan\|)(neko\-chan \<\/span\>)/gi,'$2$1$3');
  str = str.replace(/(\<span style\=\"font\-family\:Helvetica;\"\>)( \[\[User\:Neko\-chan\|)(neko\-chan \<\/span\>)/gi,'$2$1$3');
  str = str.replace(/(\<font face\=\"Helvetica\"\>)( \[\[User:Neko-chan\|)(neko\-chan \<\/font\>:3\]\])/gi,'$2$1$3');
  str = str.replace(/(\<font face\=\"Lucida Grande\"\>)( \[\[User\:Neko\-chan\|)(neko\-chan \<\/font\>)/gi,'$2$1$3');

  str = str.replace(/\[\[User:Kunalforyou\|\<big\>\<span style\=\"color:Navy;\"\>\'\'\'\'\'Kunal\'\'\<\/span\>\<\/big\>\<span style\=\"color:violet;\"\>For\<\/span\>\<span style\=\"color:\#00B7EB;\"\>\'\'\'You\'\'\'\<\/span\>\<\/big\>\<\/span\>\]\]\[\[Special:Contributions\/Kunalforyou\|\<sup\>\<span style\=\"color:Red;\"\>Contribs\<\/span\>\<\/sup\>\]\]\[\[User_talk:Kunalforyou\|\<sup\>\<span style\=\"color:\#ffffff;background:green;\"\>\'\'\'Talk\'\'\'\<\/span\>\<\/big\>\<\/sup\>\]\]/gi,'\[\[User:Kunalforyou\|\'\'\'\<big\>\<span style\=\"color:Navy;\"\>\'\'Kunal\'\'\<\/span\>\<\/big\>\<span style\=\"color:violet;\"\>For\<\/span\>\'\'\'\<span style\=\"color:\#00B7EB;\"\>You\<\/span\>\]\]\[\[Special:Contributions\/Kunalforyou\|\<sup\>\<span style\=\"color:Red;\"\>Contribs\<\/span\>\<\/sup\>\]\]\[\[User_talk:Kunalforyou\|\<sup\>\<span style\=\"color:\#ffffff;background:green;\"\>\'\'\'Talk\'\'\'\<\/span\>\<\/sup\>\]\]');

  str = str.replace(/\'\'\'\'\'\<span style=\"font\-size:medium;\"\>\<\/font\>\[\[User:SRX\|\<span style\=\"color:black;\"\>S\<\/span\>\<\/span\>\<span style\=\"color:orange;\"\>R\<\/span\>\<span style\=\"color:black;\"\>X\<\/span\>\<\/font\>\]\]\'\'\'\<sup\>\-\-\<\/sup\>\'\'\'\'\'\[\[User talk:SRX\|\<small\>\<sup\>\<span style\=\"color:orange;\"\>Latino\<\/span\>\<\/sup\>\<\/small\>\]\]\[\[User:SRX\/Guestbook\|\<small\>\<span style\=\"color:green;\"\>Heat\<\/span\>\<\/small\>\]\]\'\'\'\'\'/gi,'\<span style\=\"font-size:medium;\"\>\'\'\'\'\'\[\[User:SRX\|\<span style\=\"color:black;\"\>S\<\/span\>\<span style\=\"color:orange;\"\>R\<\/span\>\<span style\=\"color:black;\"\>X\<\/span\>\]\]\'\'\'\<sup\>\-\-\<\/sup\>\'\'\'\'\'\[\[User talk:SRX\|\<small\>\<sup\>\<span style\=\"color:orange;\"\>Latino\<\/span\>\<\/sup\>\<\/small\>\]\]\[\[User:SRX\/Guestbook\|\<small\>\<span style\=\"color:green;\"\>Heat\<\/span\>\<\/small\>\]\]\'\'\'\<\/span\>');

  str = str.replace(/(\[\[User:Spinningspark\|<)font( style="background:#*[a-z\d]+;color:#*[a-z\d]+">)\'\'\'(Sp<)font( style="background:#*[a-z\d]+;color:#*[a-z\d]+">in<)font( style="color:#*[a-z\d]+">ni)<\/font><\/font><font( style="color:#*[a-z\d]+">ng)<\/font><\/font><font( style="color:#*[a-z\d]+">Spark)\'\'\'<\/font>\]\]/gi, '\'\'\'$1span$2$3span$4span$5<\/span><\/span><span$6<\/span><\/span><span$7<\/span>\]\]\'\'\'');

  str = str.replace(/\[\[User:Violetnese\|\<font style\=\"color:\#cc99ff; background-color:darkorchid\"\>violet\]\]\<\/font\>/gi, '\[\[User:Violetnese\|\<span style\=\"color:\#cc99ff; background-color:darkorchid\"\>violet\<\/span\>\]\]');

  str = str.replace(/(<sup>''\[\[User talk:A Train\|talk\]\])(\<\/sup\>)/gi, '$1\'\'$2');

  str = str.replace(/\<font color\=\"002bb8\"\>Lugnuts\<\/font\>/gi, '\<span style\=\"color:\#002bb8\;\"\>Lugnuts\<\/span\>');

  str = str.replace(/\<font color\=\"red\"\>\[\[User :ACBest\|AC\]\]\<\/font\>\<font color\=\"gold\"\>\[\[User talk:ACBest\/Main\|Best\]\]\<\/font\>\<font color\=\"blue\"\>\[\[Special:Contributions\/ACBest\|My Contributions\]\]\<\/font\>/gi, '\[\[User:ACBest\|\<span style\=\"color:red;\">AC\<\/span\>\]\]\[\[User talk:ACBest\/Main\|\<span style\=\"color:gold;\"\>Best\<\/span\>\]\]\[\[Special:Contributions\/ACBest\|\<span style\=\"color:blue;\"\>My Contributions\<\/span\>\]\]');

  str = str.replace(/\<font face\=\"Papyrus\" color\=\"darkblue\"\>\<b\>Poeticbent\<\/b\>\<\/font\>/gi, '\<span style\=\"font\-family:\'Papyrus\'\; color:darkblue\;\"\>\<b\>Poeticbent\<\/b\>\<\/span\>');

  str = str.replace(/(\<i\>\<b\>—\&nbsp;\[\[User:Gadget850\|)<font color \= \"gray\"\>(Gadget850\&nbsp\;\(Ed\))\<\/font\>(\]\])\<font color \= \"darkblue\"\>(\&nbsp\;\<sup\>\[\[User talk:Gadget850\|)(\'\'talk\'\')(\]\]\<\/sup\>)\<\/font\>(\<\/b\> \- \<\/i\>)/gi, '$1\<span style\=\"color:gray\;\"\>$2\<\/span\>$3$4\<span style\=\"color:darkblue\;\"\>$5\<\/span\>$6$7');

  str = str.replace(/(\[\[Special\:Contributions\/SNUGGUMS\|\<b style\=\"color\:\#454545\"\>edits)(\]\])\)(\<\/b\>)/gi, '$1\)$3$2');
  str = str.replace(/(\[\[Special\:Contributions\/SNUGGUMS\|\<b style\=\"color\:\#454545\"\>edits\))(\]\])(\<\/b\>)/gi, '$1$3$2');

  str = str.replace(/(\[\[User:[a-z\. ]*Blofeld[a-z\. ]*\| *<span style="border:1px solid blue;padding:1px;)"> <font style="(color:#fef;background:black;">\'\'\'\'\'♦* *Dr. Blofeld *♦*\'\'\'\'\')<\/font>(\]\])(<\/span>)/gi, '$1$2$4$3');
  str = str.replace(/<font color="black"><u>Talk to me<\/u><\/font>/gi, '<span style="color:black;"><u>Talk to me<\/u><\/span>');
  str = str.replace(/<font size="-2">1000<\/font>/gi, '<span style="font-size:smaller">1000<\/span>');
  str = str.replace(/(\[\[User:[a-z ]+\| <span style="border:1px solid blue;padding:1px;)"> <font style="(color:#fef;background:[a-z ]+;">\'\'\'\'\'♦ Sir Blofeld ♦\'\'\'\'\')<\/font>(\]\])(<\/span>)/gi,'$1$2$4$3');
  str = str.replace(/<font size="\-4"><font color="Black">(\'\'\'\$1,000,000\?\'\'\')<\/font><\/font[ colr]+>/gi,'<small style="color:black">$1<\/small>');
  str = str.replace(/<font size="\-4"><font color="([a-z]+)">(\'\'\'"*Talk"*\?\'\'\')<\/font><\/font[ colr]+>/gi,'<small style="color:$1">$2<\/small>');
  str = str.replace(/(\[\[User:Blofeld of SPECTRE\| <span style="border:1px solid blue;padding:1px;"> <span style="color:#fef;background:black;">\'\'\'\'\'The Bald One\'\'\'\'\'<\/span>)(\]\])(<\/span>)/gi, '$1$3$2');

  str = str.replace(/<font color=orange>\[\[User:GreatOrangePumpkin\|♫GoP♫\]\]<\/font>/gi, '\[\[User:GreatOrangePumpkin\|<span style="color:orange;">♫GoP♫<\/span>\]\]');

  str = str.replace(/<span style=font\-family: \'Comic Sans MS\'><font color=#C1CDC1>\[\[User:GreatOrangePumpkin\|GoP\]\]<\/font><\/span><sub>\[\[User talk:GreatOrangePumpkin\|<font color=#8EE5EE>T<\/font>\]\]<\/sub><sup>\[\[Special:Contributions\/GreatOrangePumpkin\|<font color=#8EE5EE>C<\/font>\]\]<\/sup><sub>\[\[Special:NewPages\|<font color=#8EE5EE>N<\/font>\]\]<\/sup>/gi, '<span style=font\-family: "Comic Sans MS">\[\[User:GreatOrangePumpkin\|<span style="color:#C1CDC1;">GoP<\/span>\]\]<\/span><sub>\[\[User talk:GreatOrangePumpkin\|<span style="color:#8EE5EE;">T<\/span>\]\]<\/sub><sup>\[\[Special:Contributions\/GreatOrangePumpkin\|<span style="color:#8EE5EE;">C<\/span>\]\]<\/sup><sub>\[\[Special:NewPages\|<span style="color:#8EE5EE;">N<\/span>\]\]<\/sub>');

  str = str.replace(/<font color="Teal" face="Tahoma">\'\'\'HJ\&nbsp;Mitchell\'\'\'<\/font>/gi, '<span style="font-family:\'Tahoma\'; color:Teal;">\'\'\'HJ\&nbsp;Mitchell\'\'\'<\/span>');
  str = str.replace(/<font color="Navy" face= "Times New Roman">Penny for your thoughts\? <\/font>/gi, '<span style="font-family:\'Times New Roman\'; color:Navy;">Penny for your thoughts\? <\/span>');

  str = str.replace(/<font color="gold" face="papyrus">\[\[User talk:Syfuel\|<sup>\'\'\'Ignite\'\'\'<\/sup>\]\]<\/font><font color="black" face="papyrus">\[\[Special:Contributions\/Syfuel\|<sub>\'\'\'Burned\'\'\'<\/sub>\]\]<\/font>/gi, '\[\[User talk:Syfuel\|<span style="font-family:\'papyrus\'; color:gold"><sup>\'\'\'Ignite\'\'\'<\/sup><\/span>\]\]\[\[Special:Contributions\/Syfuel\|<span style="font-family:\'papyrus\'; color:black"><sub>\'\'\'Burned\'\'\'<\/sub><\/span>\]\]');

  str = str.replace(/<font color="FF9999" face="Tunga">\[\[User talk:Bobamnertiopsis\|ChatMe!\]\]<\/font>/gi, '\[\[User talk:Bobamnertiopsis\|<span style="font-family:\'Tunga\'; color:#FF9999;">ChatMe!<\/span>\]\]');

  str = str.replace(/<font size="4.7" face="Brush Script MT" color="#083884">\[\[User:Bluesphere\|Blue\]\]<\/font><font size="4.7" face="Brush Script MT" color="#083884">\[\[User talk:Bluesphere\|sphere\]\]<\/font>/gi, '\[\[User:Bluesphere\|<span style="font-size:large; font-family:\'Brush Script MT\'; color:#083884;">Blue<\/span>\]\]\[\[User talk:Bluesphere\|<span style="font-size:large; font-family:\'Brush Script MT\'; color:#083884;">sphere<\/span>\]\]');

  str = str.replace(/<font size="4.7" face="vivaldi" color="#083884">\[\[User:Bluesphere\|Blue\]\]\'\'\'<\/font>\'\'\'<font size="4.5" face="vivaldi" color="#083884">\[\[User talk:Bluesphere\|sphere\]\]<\/font>/gi, '\[\[User:Bluesphere\|<span style="font-size:large; font-family:\'vivaldi\'; color:#083884;">Blue<\/span>\]\]\[\[User talk:Bluesphere\|<span style="font-size:large; font-family:\'vivaldi\'; color:#083884;">sphere<\/span>\]\]');

  str = str.replace(/<font color="207004"><big>\'\'\'S<\/big>ven&nbsp;<big>M<\/big>anguard\'\'\'<\/font>/gi, '<span style="color:#207004;">\'\'\'<big>S<\/big>ven&nbsp;<big>M<\/big>anguard\'\'\'<\/span>');

  str = str.replace(/<font color="207004"><big>\'\'\'S<\/big>ven <big>M<\/big>anguard\'\'\'<\/font>/gi, '<span style="color:#207004;">\'\'\'<big>S<\/big>ven <big>M<\/big>anguard\'\'\'<\/span>');

  str = str.replace(/(<span style="border:2.5px solid black;padding:1px;)(">)(\[\[User:MrScorch6200\|)<font( style="color:Navy;)(background:cyan;)">(\'\'\'MrScorch6200\'\'\')(\]\] \(\[\[User talk:MrScorch6200\|talk\]\] &#124; \[\[Special:Contributions\/MrScorch6200\|ctrb\]\]\))<\/font>(<\/span>)/gi, '$1$5$2$3<span$4$2$6$8$7$8');

  str = str.replace(/\'\'\'<font color="titanic" face="book antiqua" size="2">\[\[User:Brambleberry of RiverClan\|Brambleberry\]\]\'\'\' <sup>\'\'\' ☾\[\[User talk:Brambleberry of RiverClan\|of RC\]\]☽\'\'\'<\/sup><\/font>/gi, '<span style="color:titanic; font-family:\'book antiqua\'; font-size:small;">\'\'\'\[\[User:Brambleberry of RiverClan\|Brambleberry\]\]\'\'\' <sup>\'\'\' ☾\[\[User talk:Brambleberry of RiverClan\|of RC\]\]☽\'\'\'<\/sup><\/span>');

  str = str.replace(/<font color="#151B8D">\'\'\'\[\[User:Rcsprinter123\|<span style="font\-family:cambria; font\-size:10pt; color:#151B8D">Rcsprinter<\/span>\]\] <\/font><font color="#151B8D"> \'\'\'/gi, '<font color="#151B8D">\'\'\'\[\[User:Rcsprinter123\|<span style="font\-family:cambria; font\-size:10pt; color:#151B8D">Rcsprinter<\/span>\]\] \'\'\' <\/font><font color="#151B8D"> ');

  //Links in links - common uses
  str = str.replace(/box score from \[\[Retrosheet\]\]\]/gi, 'box score from Retrosheet\]');
  str = str.replace(/( \{\{PD\-notice\}\})(\])/gi, '$2$1');
  str = str.replace(/(\'\')( \[\[Society for American Baseball Research\]\] Biography Project)(\])/gi, '$1$3$2');
  str = str.replace(/(")( \[\[Society for American Baseball Research\]\] Biography Project)(\])/gi, '$1$3$2');
  str = str.replace(/(\'\')( \[\[Society for American Baseball Research\|SABR\]\] Biography Project)(\])/gi, '$1$3$2');
  str = str.replace(/ *(\{\{dead link *\| *date *\= *[a-zA-Z]+ 20[12][0-9]\}\})(\])/gi, '$2$1');
  str = str.replace(/(\[https:\/\/w.wiki\/6sWQ Where were the borders crossing between)( {{Q\|Q16957}} and {{Q\|Q713750}} \?)]/gi, '$1\]$2');

  //Fix linter problems
  //str = str.replace(/([aeious\)]\')(\<small\>)(\' )/gi, '$1$3$2'); //for a batch of species articles
  str = str.replace(/Uncredited\<center\>\<small\>/gi, 'Uncredited\<\/center\>\<\/small\>'); //for filmographies edited by a pesky IP editor
  str = str.replace(/(\<center\>\{\{[a-z ]+\}\})\<center\>/gi, '$1\<\/center\>'); //for filmographies edited by a pesky IP editor

  str = str.replace(/\<b\>\<u\>all\<u\>\<b\>/gi, '\<b\>\<u\>all\<\/u\>\<\/b\>');
  str = str.replace(/\| *\'\'\'\'\'\'\'\'\'\'/gi, '\| \'\'\'\'\'\  \'\'\'\'\'');
  str = str.replace(/\| *\'\'\'\'\'\'/gi, '\| \'\'\'\  \'\'\'');
  str = str.replace(/\| *\'\'\'\'\' *\|/gi, '\| \'\'\'\  \'\'\' \|'); //five marks in a cell is an error; assuming that six are meant
  str = str.replace(/(\'\'\'\{\{\#if\:\{\{\{1\|\}\}\}\|\{\{\{1\}\}\})\'\'\' times *\| \}\}/gi, '$1 times\| \}\}\  \'\'\'');
  str = str.replace(/\<small\>\<center\>([\d\-\–\'a-z \[\]\(\)\|\?\.\;\"\+]+\<\/small\>\<\/center\>)/gi, '\<center\>\<small\>$1');
  str = str.replace(/(\'\'\'[\d\,\-–:\.%]+) *\|\|/gi, '$1\'\'\' \|\|');
  str = str.replace(/(\'\'[\d\,\-–:\.%]+) *\|\|/gi, '$1\'\' \|\|');

  //Philippine ship articles
  str = str.replace(/(\> *\'\'Shipbuildinghistory\.com) *\[/g, '$1\'\' \[');
  str = str.replace(/(\> *\'\'GlobalSecurity\.org) *\[/g, '$1\'\' \[');
  str = str.replace(/(\> *\'\'Manokski\'s ORBAT \@ Hueybravo\.*) *\[/g, '$1\'\' \[');
  str = str.replace(/(\> *\'\'AFP Materiel Technical Specification Archives \- PN Light Surface Warships) *\[/g, '$1\'\' \[');
  str = str.replace(/(\> *\'\'Naval Technology) *\[/g, '$1\'\' \[');

  //Women in Red and NYC and similar newsletters

  str = str.replace(/(<center>\-\[\[Calvin Coolidge\]\]<\/center><\/div>{{Wikiquote\-inline\|Calvin Coolidge}}<)(center>)/gi, '$1\/$2');

  str = str.replace(/(<center>)''(\[\[The Tower of Babel \(Bruegel\)\|\'\'The Tower of Babel\'\' by Pieter Bruegel the Elder\]\]<br>)/gi, '$1$2');

  str = str.replace(/(\'\'\'\'\')(\[\[Wikipedia:Meetup\/DC 30\|)(She Blinded Me with Science\'\'\'\'\': \'\'Smithsonian Women in Science Edit\-a\-Thon)(\]\])(\'\')/gi, '$2$1$3$5$4');

  str = str.replace(/(<big>)<center>(\[\[Wikipedia:The_Wikipedia_Library\/Coordinators\/Signup\|Sign up to help here :\)\]\]<\/big>)<\/center>/gi, '{{center|1=$1$2}}');

  str = str.replace(/(<big>)\n(\'\'\'The WikiProject Articles for creation Newsletter\'\'\'<\/big>)/gmi, '$1$2');

  str = str.replace(/<p>(<big>\[\[Wikipedia:The Wikipedia Library\/Newsletter\/[a-z\-\d ]+\|Read the full newsletter\]\]<\/big><br><br>\n<\/div>)/gmi, '$1');

  str = str.replace(/(\* New: \'\'\'\[\[Wikipedia:WikiProject Women in Red\/Meetup\/197\|May Mays\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/198\|Mental Health\]\])(\n)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\* New: \'\'\'\[\[Wikipedia:WikiProject Women in Red\/Meetup\/199\|Wiki Loves Pride\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/200\|June Junes\]\]  \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/201\|Jewellers \& Watchmakers\]\])(\n)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\* New: \[\[Wikipedia:WikiProject Women in Red\/Meetup\/236\|Alphabet run: C and D\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/237\|Indigenous women\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/238\|Refugees\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/239\|Comedians, Comics and other Performers\]\])\'\'\'/gi, '$1');
  str = str.replace(/(\* Continuing\: \[\[Wikipedia:WikiProject Women in Red\/Meetup\/251\|Peace and Diplomacy\]\] <small>\(year\-long initiative\)<\/small>  \'\'\'\|\'\'\' \[\[\:en\:Wikipedia\:WikiProject Women in Red\/Meetup\/252\|\#1day1woman\]\]) \'\'\'?/gi, '$1');
  str = str.replace(/(\* New: \[\[Wikipedia:WikiProject Women in Red\/Meetup\/258\|Geofocus Mediterranean\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/260\|Art \+ Activism\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/261\|Alphabet run Q \& R\]\]) \'\'\'/gi, '$1');
  str = str.replace(/(\* New: \[\[Wikipedia:WikiProject Women in Red\/Meetup\/262\|Gender studies\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/263\|Health\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/264\|Dance\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/265\|Alphabet run S & T\]\] \'\'\' \| \'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/266\|Books by women\]\]) \'\'\'/gi, '$1');
  str = str.replace(/(\* New: \[\[Wikipedia:WikiProject Women in Red\/Meetup\/267\|Alphabet run U, V, W\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/268\|Disability\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/269\|Women in Education\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/270\|CEE women\]\]) \'\'\'/gi, '$1');
  str = str.replace(/(\* New: \[\[Wikipedia:WikiProject Women in Red\/Meetup\/271\|Alphabet run X, Y & Z\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/272\|LGBTQ\+ women \| Wiki Loves Pride\]\]  \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/273\|Women in Music\]\]) \'\'\'/gi, '$1');
  str = str.replace(/(\* New: \[\[Wikipedia:WikiProject Women in Red\/Meetup\/274\|Women in Red\'s 8th anniversary\]\] \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/275\|Alphabet run A & B\]\]  \'\'\'\|\'\'\' \[\[Wikipedia:WikiProject Women in Red\/Meetup\/276\|Sports\]\]) \'\'\'/gi, '$1');
  str = str.replace(/(P.S. Next regular event February 15 will be \'\'\'\[\[Wikipedia:Meetup\/NYC\/February 2023\|Feb WikiWednesday\]\]\.)(\n)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\*\*\* \[https:\/\/news.usc.edu\/195978\/commonsense\-artificial\-intelligence\-ai\/ )\'\' "(With artificial intelligence, common sense is uncommon\]. "To help overcome this challenge, researchers use several sources of commonplace knowledge like Wikidata to obtain a “reasoned” AI response." )\'\'/gi, '$1$2');
  str = str.replace(/(:—\[\[User:MediaWiki message delivery\|MediaWiki message delivery\]\] \(\[\[User talk:MediaWiki message delivery\|talk\]\]\)[ delivr]* on behalf of .*\|Imzadi1979.* \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/small>/gi, '$1');
  str = str.replace(/(:—delivered by \[\[User:MediaWiki message delivery\|MediaWiki message delivery\]\] \(\[\[User talk:MediaWiki message delivery\|talk\]\]\) on behalf of {{U\|Imzadi1979}} on \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/small>/gi, '$1');
  str = str.replace(/(:—\[\[User:MediaWiki message delivery\|MediaWiki message delivery\]\] \(\[\[User talk:MediaWiki message delivery\|talk\]\]\) \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\) on behalf of {{u\|Imzadi1979}}) <\/small>/gi, '$1');
  str = str.replace(/(:—\[\[User:MediaWiki message delivery\|MediaWiki message delivery\]\] \(\[\[User talk:MediaWiki message delivery\|talk\]\]\) on behalf of <span style="background:#006B54; padding:2px;">\'\'\'\[\[User:Imzadi1979\|<span style="color:white;">Imzadi&nbsp;1979<\/span>\]\]&nbsp;\[\[User talk:Imzadi1979\|<span style="color:white;"><big>→<\/big><\/span>\]\]\'\'\'<\/span> on \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/small>/gi, '$1');
  str = str.replace(/(:—delivered by \[\[User:MediaWiki message delivery\|MediaWiki message delivery\]\] \(\[\[User talk:MediaWiki message delivery\|talk\]\]\) on behalf of \[\[User:Imzadi1979\|Imzadi1979\]\] \(\[\[User talk:Imzadi1979\|talk\]\]\) on \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/small>/gi, '$1');
  str = str.replace(/(:—\[\[User:MediaWiki message delivery\|MediaWiki message delivery\]\] \(\[\[User talk:MediaWiki message delivery\|talk\]\]\) on behalf of Imzadi1979, \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/small>/gi, '$1');
  str = str.replace(/(:—\[\[User:MediaWiki message delivery\|MediaWiki message delivery\]\] \(\[\[User talk:MediaWiki message delivery\|talk\]\]\) \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/small>/gi, '$1');
  str = str.replace(/(: —\[\[User:Rschen7754bot\|Rschen7754bot\]\] \(\[\[User talk:Rschen7754bot\|talk\]\]\) \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/small>/gi, '$1');
  str = str.replace(/(: *—<span style="background:#006B54; padding:2px;" *>\'\'\'\[\[User:Imzadi1979\|<span style="color:white;">Imzadi&nbsp;1979<\/span>\]\]&nbsp;\[\[User talk:Imzadi1979\|<span style="color:white;"><big>→<\/big><\/span>\]\]\'\'\'<\/span>  \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/small>/gi, '$1');
  str = str.replace(/(: —)<\/small>( *\[\[User:JCbot\|JCbot\]\] \(\[\[User talk:JCbot\|talk\]\]\) \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))/gi, '$1$2');
  str = str.replace(/(<hr *\/><br *\/>\n)<div style="font\-size: *12pt; font\-family: *Times New Roman; text\-align: *center; *">\n(\n\|\- style="text\-align: center;")/gmi, '$1$2');
  str = str.replace(/(\* \[\[outreach:Education Portal\/Newsletter\/[a-z]+ 20\d\d\/Articles of Interest in other publications\|Articles of Interest in other publications\]\]\n+)<div>/gmi, '$1<\/div>');
  str = str.replace(/(<big>)\n\n(\'\'\'The \[\[Wikipedia:WikiProject Professional wrestling\|WikiProject Professional wrestling\]\] Newsletter\'\'\'<\/big>)/gi, '$1$2');

  str = str.replace(/(:—\[\[User:EdwardsBot\|EdwardsBot\]\] \(\[\[User talk:EdwardsBot\|talk\]\]\) \d+:\d+, \d+ [a-z]+ 20\d\d \(UTC\))<\/small>/gi, '$1');

  str = str.replace(/<div>\n\|\-/gmi, '<\/div>\n\|\-');

  str = str.replace(/(\|<font color="gold">\'\'\'100000 Edits\'\'\')(\n)/gmi, '$1<\/font>$2');
  str = str.replace(/(\|<font color="gold"> Congratulation[a-z]* on reaching 100000 edits[a-z\d \.\,]+The Wikipedia Community thanks you for your continuing efforts. *Keep up the good work! *)(\n)/gmi, '$1<\/font>$2'); 
  str = str.replace(/(\|info     = <font color="gold">This user has been awarded with the \'\'\'100000 Edits award\'\'\'.)(\n)/gmi, '$1<\/font>$2');
  str = str.replace(/(<font color="black">)(\n\|})/gmi, '$2');

  //Delete p <p> tag on its own line  
  str = str.replace(/\n<p>\n/gmi, '\n\n');

  //fix table ending for EdwardsBot messages
  str = str.replace(/(\[\[User:EdwardsBot\|EdwardsBot\]\]}})(\|})/gi, '$1\n$2');
  str = str.replace(/(}})(\|}\n<!\-\- EdwardsBot)/gmi, '$1\n$2');

  str = str.replace(/(<p>\[\[Wikipedia:WikiProject Wikify\/News\/July 2012\/Members\|Membership\]\] &bull; \[\[Wikipedia:WikiProject Wikify\/News\/July 2012\/Drive\|June drive results\]\])(\n)/gmi, '$1<\/p>$2');

  str = str.replace(/(\|style="text\-align:center;"\|<small>DISCLAIMER: +This humor does not reflect the official humor of Wikipedia, the Wikimedia Foundation, or Jimbo Wales[\.,a-z ]+[<br>]*All rights released under GFDL. )(\n)/gmi, '$1<\/small>$2');

  str = str.replace(/(\'\'\'<big>Happy New Year from \[\[meta:Wikimedians of Los Angeles\|Wikimedians of Los Angeles\]\]! <\/big>)\n/gmi, '$1\'\'\'\n');
  str = str.replace(/({{center|\'\'\'We\'re beginning to plan in-person and virtual events for 2022, and your support is needed as we re\-launch the LA User Group\.)(}})/gmi, '$1\'\'\'$2');
  str = str.replace(/<center>(<big>Please join us in[a-z ]*San Francisco[a-z ]*!<\/big>)<\/center>/gi,'{{center\|1=$1}}');

  str = str.replace(/<font( style="position: relative; top: .3em; font\-size: 250%;">\'\'\'Weekly Delivery\'\'\'<\/)font>/gi,'<span$1span>');

  str = str.replace(/\'\'\'<center>(<small>Join our Facebook group \[https:\/\/www.facebook.com\/groups\/869710869719333\/ here\], and follow us on \[https:\/\/twitter.com\/Wikipedia_LA Twitter \].<br>)\n(To opt out of future mailings about LA meetups, please remove your name from \[\[Wikipedia:Meetup\/LA\/Invites\|this list\]\].<\/small>)<\/center>\'\'\'/gmi, '{{center|1=\'\'\'$1$2\'\'\'}}'); 

  str = str.replace(/(<span style=color:black">)<center>( Volume 1, Issue 1 • )<span style=color:black">([a-z]+ \d+, \d\d\d\d • )(\[\[Wikipedia:AWC\/newsletter\|<span style="color:white">About the Newsletter)(\]\])<\/center>/gi,'{{center\|1=$1$2$3<\/span>$4<\/span>$5}}');

  str = str.replace(/(<big>\'\'\'\[\[WP:AWC\|<span style="color:white">The Wikipedia Awards Center <\/span>]] Newsletter\'\'\')<\/div>/gi, '$1<\/big>');

  //WikiProject Yorkshire newsletters (many slight variants)
  str = str.replace(/<center>(<small>Got any suggestions\?<br[ \/]*> — \'\'Add them \[\[WT:YORKS\|<font color="#000000">here<\/font>\]\]\'\'<\/small><br\/>)/gi,'{{center\|1=$1}}');
  str = str.replace(/<center>(<small>Got any suggestions\?<br[ \/]*> — \'\'Add them \[\[WT:YORKS\|<span style="color:#000+;">here<\/span>\]\]\'\'<\/small><br\/>)/gi,'{{center\|1=$1}}');
  str = str.replace(/(\*\'\'Assessment\'\'<br \/>)"\'\'(\[\[Wikipedia:WikiProject Yorkshire\/Assessment\|Assess and review\]\] Assessment of Yorkshire related articles  has been brought  up to date recently, but needs constant maintenance\.)/gi, '$1$2');
  str = str.replace(/(<small>Written by \[\[User:[a-z\d \|]+\]\] • Template by \[\[User:Jza84\|Jza84\]\] \| \'\'\'\[\[Wikipedia:WikiProject Yorkshire\/Newsletter\/[a-z]+ 20\d\d\|Single\-Page View\]\])(<\/small>)(\'\'\')<\/div>/gi, '$1$3$2');
  str = str.replace(/(<small>Written by \[\[User:[a-z\d \|]+\]\][\/ and&]+\[\[User:[a-z\d \|]+\]\] *• Template by \[\[User:Jza84\|Jza84\]\] \| \'\'\'\[\[Wikipedia:WikiProject Yorkshire\/Newsletter\/[a-z]+ 20\d\d\|Single\-Page View\]\])(<\/small>)(\'\'\')<\/div>/gi, '$1$3$2');
  str = str.replace(/(<small>Written by {{noping\|[a-z\d \|]+}} • Template by {{noping\|[a-z\d \|]+}} \| \'\'\'\[\[Wikipedia:WikiProject Yorkshire\/Newsletter\/[a-z]+ 20\d\d\|Single\-Page View\]\])(<\/small>)(\'\'\')[<\/div>]*/gi, '$1$3$2');
  str = str.replace(/(<big>)\n(\'\'\'The \[\[Wikipedia:WikiProject Yorkshire\|WikiProject Yorkshire\]\] Newsletter\'\'\'<\/big>)/gmi, '$1$2');
  str = str.replace(/<center>(<small>Delivered [a-z]+ 20\d\d by \[\[User:ENewsBot\|\'\'\'ENewsBot\'\'\'\]\]\. If you do not wish to receive the newsletter, please add [twoan \*\'s]+ b[yefore]+ your username on the Project Mainpage\.<\/small>)<\/center>/gi,'{{center\|1=$1}}');
  str = str.replace(/(PR started on \'\'\'Ju[a-z][a-z] \d\dth)\n(\'\'\'<br \/>)/gmi, '$1$2');
  str = str.replace(/(DYK featured on main page on '''June 25th)\n(\'\'\'<br \/>)/gmi, '$1$2');
  str = str.replace(/(\'\'\[\[Church of St Michael and All Angels, Beckwithshaw\]\]\')( appeared)/gi, '$1\'$2');

  //GOCE newsletters
  str = str.replace(/<center>(<big>\'\'\'[\[\]a-z &;\|\d><:\/\-]+\'\'\'<\/big><p><small>To discontinue receiving GOCE newsletters, please remove your name from \[\[Wikipedia:WikiProject Guild of Copy Editors\/Mailing List\|our mailing list\]\]\.[a-z ]*\[\[User:EdwardsBot\|EdwardsBot\]\] \(\[\[User talk:EdwardsBot\|talk\]\]\) [\d\:, a-z]+ \(UTC\)<\/small>)<\/center>/gi, '{{center\|1=$1<\/p>}}');
  str = str.replace(/<center>(<p><small>To discontinue receiving GOCE newsletters, please remove your name from \[\[Wikipedia:WikiProject Guild of Copy Editors\/Mailing List\|our mailing list\]\]\.<\/small>)<\/center>/gi, '{{center\|1=$1<\/p>}}');
  str = str.replace(/<center>(<p><small>To discontinue receiving GOCE newsletters, please remove your name from \[\[Wikipedia:WikiProject Guild of Copy Editors\/Mailing List\|our mailing list\]\]\.[a-z ]*\[\[User:EdwardsBot\|EdwardsBot\]\] \(\[\[User talk:EdwardsBot\|talk\]\]\) [\d\:, a-z]+ \(UTC\)<\/small>)<\/center>/gi, '{{center\|1=$1<\/p>}}');
  str = str.replace(/(<span style="font-size: 110%;">\'\'\'\[\[WP:GOCE\|Guild of Copy Editors\]\] [a-z \d]+ News[letr]*)(<\/span>)/gi, '$1\'\'\'$2'); 
  str = str.replace(/(May_2023\| May Backlog Elimination Drive)\'\'\'(\]\])/gi, '$1$2');
  str = str.replace(/(<big>\[\[Wikipedia:WikiProject Guild of Copy Editors\/Blitzes\/[a-z]+ 20\d\d\|>>> Sign up for the [a-z]+ [Blitzdrve]+\! <<<\]\])'''(<\/big>)/gi, '$1$2');
  str = str.replace(/(<big>\[\[Wikipedia:WikiProject Guild of Copy Editors\/Backlog elimination drives\/[a-z]+ 20\d\d\|>>> Sign up for the [a-z]+ [Blitzdrve]+\! <<<\]\])'''(<\/big>)/gi, '$1$2');
  str = str.replace(/(MediaWiki message delivery.*21 February 2014 \(UTC\))(\|\})/gi, '$1\n$2');

  //Military history and Wikify newsletters
  str = str.replace(/(\* [a-z \-]+: \'\'\[\[Wikipedia:WikiProject Military history\/News\/.*\]\])(\n)/gmi, '$1\'\'$2');
  str = str.replace(/(<p>\[\[Wikipedia:WikiProject Military history\/[a-z •\d\-\|\[\]\/\":\&;]+)(\n<\/div>)/gmi, '$1<\/p>$2');
  str = str.replace(/(<p>\[\[Wikipedia:WikiProject Wikify\/[a-z •\d\-\|\[\]\/\":\&;]+)(\n<\/div>)/gmi, '$1<\/p>$2');

  //WikiProject Saskatchewan newsletters
  str = str.replace(/==<div style="font\-family:monotype corsiva, Arial, Helvetica, sans\-serif; font\-size:15px; color:Purple;">\[\[Image:Flag of Saskatchewan\.svg\|42px\]\] \'\'\'(\[\[Wikipedia:WikiProject Saskatchewan\|WikiProject Saskatchewan\]\] \[\[Wikipedia:WikiProject Saskatchewan\/Outreach\|Newsletter\]\]: Volume \d+, Issue \d+ \- [a-z]+ 20\d\d)\'\'\'<\/div>==/gi, '==$1=='); 
  str = str.replace(/==<div style="font\-family:monotype corsiva, Arial, Helvetica, sans\-serif; font\-size:15px; color:Purple;">\[\[Image:Flag of Saskatchewan\.svg\|42px\]\] \'\'\'(\[\[Wikipedia:WikiProject Saskatchewan\|WikiProject Saskatchewan\]\] \[\[Wikipedia:WikiProject Saskatchewan\/Outreach\|Newsletter\]\]:) <br \/>:  \[\[File:Jack\-o\-lantern\.svg\|42px\]\] ( Volume \d+, Issue \d+ \- [a-z]+ 20\d\d)\'\'\' \[\[File:Nek\-o\-lantern\.svg\|42px\]\]<\/div>==/gi, '==$1$2==');
  str = str.replace(/==<div style="font\-family:monotype corsiva, Arial, Helvetica, sans\-serif; font\-size:15px; color:Purple;">\[\[Image:Flag of Saskatchewan\.svg\|42px\]\] \'\'\'(\[\[Wikipedia:WikiProject Saskatchewan\|WikiProject Saskatchewan\]\] \[\[Wikipedia:WikiProject Saskatchewan\/Outreach\|Newsletter\]\]:)\[\[File:Wreath icon\.png\|42px\]\] <br \/>:   ( Volume \d+, Issue \d+ \- [a-z]+ 20\d\d)\'\'\'<\/div>==/gi, '==$1$2==');
  str = str.replace(/==<div style="font\-family:monotype corsiva, Arial, Helvetica, sans\-serif; font\-size:15px; color:Purple;">\[\[Image:Flag of Saskatchewan\.svg\|42px\]\] \'\'\'(\[\[Wikipedia:WikiProject Saskatchewan\|WikiProject Saskatchewan\]\] \[\[Wikipedia:WikiProject Saskatchewan\/Outreach\|Newsletter\]\]: Volume \d+, Issue \d+ \- [a-z]+ 20\d\d)\'\'\' \[\[File:Royal British Legion\'s Paper Poppy \- white background\.jpg\|42px\]\]<\/div>==/gi, '==$1==');
  str = str.replace(/(Subcribers\|Subscribers\]\] &nbsp;\|&nbsp;\n<\/div>)<\/center>/gmi, '$1'); 

  str = str.replace(/<center><font size=4>(\'\'\'Navigation:\'\'\')<br><\/font><\/center>/gi, '{{center\|1=<span style="font\-size:large">$1<\/span>}}');

  str = str.replace(/(\|style="color:#076A21; text\-align:center"\|)\'\'(\n)/gmi, '$1$2'); 

  str = str.replace(/<\/center>\n(\|} <div style="float:right; font\-size:80%;">New condensed format delivered by:)/gmi, '$1');

  str = str.replace(/ <font color="Red">(\(\[\[Wikipedia:WikiProject Saskatchewan\/Newsletter\/January 2010\|)(January 2010!)(\]\])( \- Post your news years resolution\))<\/font>\'\'\'/gi, '$1<span style="color:red">$2<\/span>$3<span style="color:red">$4<\/span>');

  //Block messages
  str = str.replace(/(<div class="user\-block">\[\[Image:Stop_x_nuvola\.svg\|left\|35px\]\]<span style="font\-size: 105%;">Your account has been \'\'\'blocked indefinitely\'\'\' from editing Wikipedia because it appears to be mainly intended or used for publicity and\/or promotional purposes. Please read the following carefully.<\/span>)<\/br>(\n\n)/gmi, '$1$2');
  str = str.replace(/<p>(\'\'\'Why can\'t I edit Wikipedia\?\'\'\')<\/br>\n/gmi, '$1\n\n');

  str = str.replace(/<p>([\[\]a-z\|\' :]+ and\/or username indicate that it is being used on behalf of a [a-z ,\-]+ for purposes of promotion and\/or publicity. +The edits may have violated one or more of our rules on [\[\]a-z\|\' :]+, which include: \[\[WP:LINKSPAM\|adding inappropriate external links\]\], \[\[WP:SPAM\|posting advertisements\]\], and \[\[WP:PROMOTION\|using Wikipedia for promotion\]\]. [\[\]a-z\|\', :]+ it is considered [\[\]a-z\|\' :]+ for such groups to use Wikipedia to write about themselves. \'\'In addition\'\', usernames like yours are disallowed under our \[\[WP:ORGNAME\|username policy\]\].)\n/gmi, '$1\n');

  str = str.replace(/(^:\'\'The above discussion is preserved as an archive of the debate. <span style="color:red">\'\'\'Please do not modify it.\'\'\'<\/span> Subsequent comments should be made on the appropriate discussion page \(such as the article\'s \[\[Help:Using talk pages\|talk page\]\] or in a \[\[Wikipedia:Deletion review\|deletion review\]\]\). No further edits should be made to this page.)( <!\-\-Template:Afd bottom\-\-><\/div>\n)/gmi, '$1\'\'$2');


  //Misnested tags
  str = str.replace(/(for \[\[WP\:ARCHIVE\|\(\<b\>more\<\/b\>\)\]\] information\.)(\<\/i\>)(\<\/span\>)/gi, '$1$3$2');    
  str = str.replace(/(for \[\[WP\:ARCHIVE\|\(\'\'\'more\'\'\'\)\]\] information\.)(\'\')(\<\/span\>)/gi, '$1$3$2'); 
  str = str.replace(/\<small\>(\{\{updated\|[\da-z \.,]+\}\}\.*)\<\/small\>/gi, '$1');
  str = str.replace(/(\'\'\')(\<s\>)(Oppose\'\'\')/gi, '$2$1$3');
  str = str.replace(/(\'\'\')(\<s\>)(Weak oppose\'\'\')/gi, '$2$1$3');
  str = str.replace(/(<s>)(\'\'\')([A-Za-z\d,\.:; ]+<\/s>)/gi, '$2$1$3');
//  str = str.replace(/(\'\'\')(<s>)([A-Za-z\d,\.:; ]+\'\'\')/gi, '$2$1$3');  // false positives
  str = str.replace(/(<i><b>Update:)(<\/i>)(<\/b>)/gi, '$1$3$2');
  str = str.replace(/(<b><i>Update:)(<\/b>)(<\/i>)/gi, '$1$3$2');

  //indented div templates
  str = str.replace(/:: *({{interlinear)/gi, '$1\|indent\=4');    
  str = str.replace(/:: *({{fs interlinear)/gi, '$1\|indent\=4');      
  str = str.replace(/: *({{interlinear)/gi, '$1\|indent\=3');    
  str = str.replace(/: *({{fs interlinear)/gi, '$1\|indent\=3');      

  //Fostered content 
  str = str.replace(/(\|\-)\n\<br \/\>(\n\|)/gmi, '$1$2'); 

  //unclosed p tag used as a clear template on Userbox pages
  str = str.replace(/\<p style\=\"clear\: both\; padding\-top\: 2em\"\>/g, '\{\{clear\}\}');   

  //Improperly indented NumBlk
  str = str.replace(/^(\:+)(\{\{NumBlk\|)/gmi, '$2$1'); 

  //Fix linter missing or extra end tags
  str = str.replace(/(<small> \'\'\'Unblocking administrator\'\'\': Please check for <span class="plainlinks">\[http:\/\/toolserver.org\/\~eagle\/autoblockfinder.php\?user=\{\{PAGENAMEE\}\} active autoblocks\] on this user after accepting the unblock request\.)(<\/small>)/gi, '$1<\/span>$2');
  str = str.replace(/(:\'\'The following discussion is preserved as an archive of a \[\[wikipedia:requests for adminship\|request for adminship\]\] that \'\'\'did not succeed\'\'\'. <[spantrog]+ style="color:red">\'*Please do not modify it\.\'*<\/[spantrog]+>)(\[\[Category:Unsuccessful requests for adminship\|{{SUBPAGENAME}}\]\]\n)/gmi, '$1\'\'$2');

  str = str.replace(/(:\'\'The following discussion is preserved as an archive of a \'\'\'successful\'\'\' \[\[wikipedia:requests for adminship\|request for adminship\]\]. <span style="color:red">\'\'\'Please do not modify it\'\'\'<\/span>\.)(\[\[Category:Successful requests for adminship\|{{SUBPAGENAME}}\]\]\n)/gmi, '$1\'\'$2');

  str = str.replace(/(\|\| *\'\'\'[\d\,\-– a-z\.½—]+)( *\|\|)/gi, '$1\'\'\'$2');
  str = str.replace(/(\|\|[\t ]*\<span style\=\"color\:\#[\da-z]+\;*\"\>[a-z\d \t]+)(\|\|)/gi, '$1\<\/span\>$2');
  str = str.replace(/(\|\|[\t ]*\<small\>[a-z\d \t\(\)\-–\'\?\;\[\]\,\&]+)(\|\|)/gi, '$1\<\/small\>$2');
  str = str.replace(/(\<sub\> *[\dcnxQroTev]+[ ]*)(\n*\|)/gmi, '$1\<\/sub\>$2');
  str = str.replace(/(\<sup\> *[\dcnxQroTev]+[ ]*)(\n*\|)/gmi, '$1\<\/sup\>$2');
  str = str.replace(/(\<small\>\{\{[A-Z][A-Z][A-Z]\}\}) *(\|\|)/g, '$1\<\/small\>$2');
  str = str.replace(/(\<small\>\{\{[A-Z][A-Z][A-Z]\}\}) *(\n\|)/g, '$1\<\/small\>$2');
  str = str.replace(/(\<small\> *\([012345]\+[012345]\+[012345]\+[012345]\)) *(\n)/g, '$1\<\/small\>$2');
  str = str.replace(/(\<small\> *\([012345]\+[012345]\)) *(\n)/g, '$1\<\/small\>$2');
  str = str.replace(/(\|\|[\t ]*\<u\>[a-z\d \t\(\)\-–\']+)(\|\|)/gi, '$1\<\/u\>$2');
  str = str.replace(/(\<div id\=\"[a-z \.\d\,\-–\/\?\'\(\)\;áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?]+\"\>)( *\{\{football *box)/gi, '$1\<\/div\>$2'); //for football articles with unclosed div tags for each match
  str = str.replace(/(\<div id\=\"[a-z \.\d\,\-–\/\?\'\(\)\;áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?]+\"\>)( *\{\{handball *box)/gi, '$1\<\/div\>$2'); //for football articles with unclosed div tags for each match
  str = str.replace(/( *\<small\>[a-z \.\[\]\d\,\-–\/\?\'\(\)\;áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?]+)( *\|\|)/gi, '$1\<\/small\>$2');
  str = str.replace(/(\<small\>b\/w[a-z \.\[\]\d\,\-–\/\?\!\'\(\)\;\"\&\:ñ\#]+\<br *\/\>[a-z \.\[\]\d\,\-–\/\?\!\'\(\)\;\"\&\:ñ\#]+) *(\n\|)/gmi, '$1\<\/small\>$2'); //for discographies and song lists
  str = str.replace(/(\<small\>b\/w[a-z \.\[\]\d\,\-–\/\?\!\'\(\)\;\"\&\:ñ\#]+) *(\n\|)/gmi, '$1\<\/small\>$2'); //for discographies and song lists
  str = str.replace(/(\<small\>b\/w[a-z \.\[\]\d\,\-–\/\?\!\'\(\)\;\"\&\:ñ\#]+) *(\|\|)/gmi, '$1\<\/small\>$2'); //for discographies and song lists
  str = str.replace(/(\<small\>Both sides[a-z \.\[\]\d\,\-–\/\?\'\(\)\;\"\&\#]+) *([\n\|]+)/gmi, '$1\<\/small\>$2'); //for discographies and song lists
  str = str.replace(/(\<small\>CD sing[a-z \.\[\]\d\,\-–\/\?\'\(\)\;\"\&\#]+) *([\n\|]+)/gmi, '$1\<\/small\>$2'); //for discographies and song lists
  str = str.replace(/(\<small\>B-side[a-z \.\[\]\d\,\-–\/\?\'\(\)\;\"\&\#:]+) *([\n\|]+)/gmi, '$1\<\/small\>$2'); //for discographies and song lists
  str = str.replace(/(\<small\>\(feat[a-z \.\[\]\d\,\-–\/\?\'\(\)\;\"\&\#:]+) *([\n\|]+)/gmi, '$1\<\/small\>$2'); //for discographies and song lists

  str = str.replace(/(\|colspan\=3 style\=\"padding:5px\"\|\<big\>\'\'\'\[\[Wikipedia:WikiProject U.S. Roads\|\<span style\=\"color:white\"\>The U.S. Roads WikiProject\<\/span\>\]\] Newsletter\'\'\'\<\/)div\>/gi, '$1big\>');

  str = str.replace(/( \(UTC\))(\n:)(\'\'If this is[^\n]+\<\/del\>)/gmi, '$1\<\/del\>$2\<del\>$3');

  //tennis Outcomes or Score
  str = str.replace(/^(!style\=\"width:\d\d+px\"\|\'\'\'[A-Z][a-z ]+)(\n)/gm, '$1\'\'\'$2');
  str = str.replace(/^(!style\=\"width:\d\d+px\" class\=\"unsortable\"\|\'\'\'[A-Z][a-z ]+)(\n)/gm, '$1\'\'\'$2');
  str = str.replace(/^(\|width=\"\d\d+\"\|\'\'\'[A-Z][a-z ]+)(\n)/gmi, '$1\'\'\'$2');
  str = str.replace(/^(\|width=\"\d\d+\"\|\'\'\'[A-Z][a-z ]+)(\n)/gmi, '$1\'\'\'$2');

  //ski world cup
  str = str.replace(/^(\| *align=\"*[a-z]+\"* *width=\"*\d+\"* *\| *\'\'\'[a-z ]+)\s*(\n)/gmi, '$1\'\'\'$2');
  str = str.replace(/^(\| *align=\"*[a-z]+\"* *width=\"*\d+\"* *\| *\{\{Abbr\|\'\'\'[a-z ]+)(\|[a-z \}]+)\s*(\n)/gmi, '$1\'\'\'$2$3');

  str = str.replace(/\'\'\'\{\{bartable/gi, '\{\{bartable'); //bold can't wrap bartable template

  str = str.replace(/(\| *list1\=)<\/span\>/gi, '$1');

  str = str.replace(/(\|\| *\'\'\'[\d\,\-–½—]+)( *\n)/gi, '$1\'\'\'$2');
  str = str.replace(/(\| *align=\"*[a-z]+\"* *\| *\'\'\'[\d\,]+)\s*(\n)/gi, '$1\'\'\'$2');
  str = str.replace(/(\| *rowspan= *\d *\| *\'\'\'[\d\,a-z ]+)\s*(\n)/gi, '$1\'\'\'$2');
  str = str.replace(/(\| *rowspan= *\d *\| *\d *\'\'\'[\d\,a-z]+)\s*(\n)/gi, '$1\'\'\'$2');
  str = str.replace(/(\| *scope=row style=\"text\-align:center\" *\| *\'\'\'[\d\,]+)\s*(\n)/gi, '$1\'\'\'$2');
  str = str.replace(/(\| *\<center\>[a-z\d\[\]\-\(\)]+)\<center\>(\n)/gi, '$1\<\/center\>$2'); //close two open center...center tags
  str = str.replace(/(\|\<center\>[\d\'\[\]\|]+)\s*(\n)/gi, '$1\<\/center\>$2');
  str = str.replace(/^(\| *\<center\>[\d\'\[\]\|a-z \&\}\{]+)\s*(\n+\|)/gmi, '$1\<\/center\>$2');
  str = str.replace(/^(\! *\<center\>[\d\'\[\]\|a-z \&\}\{]+)\s*(\n+\|)/gmi, '$1\<\/center\>$2');
  //all-purpose center tag replacement
  str = str.replace(/\<center\>([\d\'a-z \%\&\|\}\{\-\.\,\(\)–—\*:\+ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?⊕⊗会話投稿記録日本穣投稿]+)\<\/center\>/gi, '\{\{center\|$1\}\}');  

  // center tags around images
  str = str.replace(/\<center>(\[\[[ImageFile]+:[^\]]+)\]\]<\/center>/gi, '$1\|center\]\]');
  str = str.replace(/(\[\[[ImageFile]+:[^\]]+\|center\|[^\]]+)\|center\]\]/gi, '$1\]\]');


  str = str.replace(/^(\|\s*\<s\>[a-z \d\,\-–\.\[\]\(\)\|\'\:]+)(\s*\n+\|)/gmi, '$1\<\/s\>$2');
  str = str.replace(/(\|\s*\<s\>[a-z \d\,\-–\.\[\]\(\)\'\:]+)(\s*\|)/gi, '$1\<\/s\>$2');
  str = str.replace(/\|\'\'replay\|\|/gi, '\|\'\'replay\'\'\|\|');
  str = str.replace(/^(\|) *\'\'\'(\n+\|)/gmi, '$1$2');
  str = str.replace(/^(\| *\'\'\'[a-z \d\,\-–—\.\[\]\(\):\%áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n+\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/^(\| *\'\'\'[a-z \d\,\-–—\.\[\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+\|[a-z \d\,\-–\.\]\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?]+)(\n+\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/^(\| *\'\'[a-z \d\,\-–—\.\[\]\(\):áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n+\|)/gmi, '$1\'\'$2');
  str = str.replace(/^(\| *\'\'[a-z \d\,\-–—\.\[\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+\|[a-z \d\,\-–\.\]\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?]+)(\n+\|)/gmi, '$1\'\'$2');
  str = str.replace(/(\|\| *\'\'\'[a-z \d\,\-–—\.\[\]\(\):áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n+\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\|\| *\'\'\'[a-z \d\,\-–—\.\[\]\(\):áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\|\|)/gi, '$1\'\'\'$2');
  str = str.replace(/(\|\| *\'\'\'[a-z \d\,\-–—\.\[\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+\|[a-z \d\,\-–\.\]\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?]+)(\n+\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\|\| *\'\'[a-z \d\,\-–—\.\[\]\(\):áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n+\|)/gmi, '$1\'\'$2');
  str = str.replace(/(\|\| *\'\'[a-z \d\,\-–—\.\[\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+\|[a-z \d\,\-–\.\]\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?]+)(\n+\|)/gmi, '$1\'\'$2');
  str = str.replace(/(\| *\'\'\'[\[\|a-z\d,\-–— \(\)\.:áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+\]\]) *(\|\|)/gi, '$1\'\'\'$2');
  str = str.replace(/(\| *\'\'[\[\|a-z\d,\-–— \(\)\.:áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+\]\]) *(\|\|)/gi, '$1\'\'$2');
  str = str.replace(/(\| *\'\'\'[WL])(\]\]\n)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\{\{Nowrap\|\'\'\'Matches on Main Courts)(\}\})/gi, '$1\'\'\'$2');
  str = str.replace(/^(\|[a-z\d ]+\'\'\'[a-z \d\,\-–\.\[\]\(\)]+)(\n+\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/^(\|[a-z\d ]+\'\'[a-z \d\,\-–\.\[\]\(\)]+)(\n+\|)/gmi, '$1\'\'$2');
  str = str.replace(/([\|\!] *\<small\>[a-z \d\,\-–\.\[\]\(\)\t\?\;]+)(\n+[\|\!])/gmi, '$1\<\/small\>$2');
  str = str.replace(/([\|\!] *\<small\> *)(\n+[\|\!])/gmi, '$1\<\/small\>$2');
  str = str.replace(/^( *\| *RD\db*\-[teamscoreseed\-\d]+ *\= *'''[a-z \d½\,\-–\.\[\]\(\)\{\}\|\/\<\>]+)(\n+ *\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/^( *\| *RD\db*\-[teamscoreseed\-\d]+ *\= *'''[a-z \d½\,\-–\.\[\]\(\)\{\}\|\/\<\>]+)(\n *\}\})/gmi, '$1\'\'\'$2');
  str = str.replace(/^( *\| *team\d *\= *'''[\[\]\da-z \-\.]+)(\n *\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/^( *\| *team\d *\= *'''[\[\da-z \-\.]+\|[\]\da-z \-\.]+)(\n *\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/^( *\| *team\d *\= *''[\[\]\da-z \-\.]+)(\n *\|)/gmi, '$1\'\'$2');
  str = str.replace(/^( *\| *team\d *\= *''[\[\da-z \-\.]+\|[\]\da-z \-\.]+)(\n *\|)/gmi, '$1\'\'$2');

  str = str.replace(/^(\| *align\=\"*[centerlfigh]+\"* *\|\d* *\'\'\'[\[\]\d½a-záàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\? \-\.\–\,\+:\&\;\t\"\%\/\(\)]+)(\n\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/^(\| *align\=\"*[centerlfigh]+\"* *\|\d* *\'\'[\[\]\d½a-záàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\? \-\.\–\,\+:\&\;\t\"\%\/\(\)]+)(\n\|)/gmi, '$1\'\'$2');
  str = str.replace(/^(\| *align\=\"*[centerlfigh]+\"* *\|\d* *\'\'\'[\[\d½a-záàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\? \-\.\–\,\+:\&\;\t\"\%\/\(\)]+\|[\]\da-z \-\.\–\,:\&\;\t\"\%]+)(\n\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/^(\| *align\=\"*[centerlfigh]+\"* *\|\d* *\'\'[\[\d½a-záàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\? \-\.\–\+:\&\;\t\"\%\/\(\)]+\|[\]\da-z \-\.\–:\&\;\t\"\%]+)(\n\|)/gmi, '$1\'\'$2');

  str = str.replace(/^([\|\!] *colspan *\= *\d+ *\| *\'\'\'[\[\]\(\)\d½a-záàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?, \-\.\–\&]+)(\n\|)/gmi, '$1\'\'\'$2');

  str = str.replace(/^([\|\!] *colspan *\= *\d+ *\| *\'\'[\[\]\(\)\d½a-záàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?, \-\.\–\&]+)(\n\|)/gmi, '$1\'\'$2');

  str = str.replace(/^(\| *align\=\"[centerlfigh]+\" \| *\<s\>[\[\]\d½a-záàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?, \-\.\–\:\/\(\)\&]+)(\n\|)/gmi, '$1\<\/s\>$2');
  str = str.replace(/^(\| *align\=\"[centerlfigh]+\" \| *\<s\>[\[\d½a-záàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\? \-\.\–\:\/\(\)\&]+)(\n\|)/gmi, '$1<\/s\>$2');

  str = str.replace(/^(\* \<div style\=\"color\: \#\d+\;\"\> *[\[\da-záàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?, \-\.\–\&]+)(\n[\*\|])/gmi, '$1\<\/div\>$2');

  str = str.replace(/^(\| *\{\{Flagicon\|[a-z]+\}\} *\'\'\' *[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n[\*\|])/gmi, '$1\'\'\'$2');
  str = str.replace(/^(\| *\{\{Flagicon\|[a-z]+\}\} *\'\'\' *[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+[\<\br/\> ]+\{\{Flagicon\|[a-z]+\}\}[\<\br/\> ]+[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n[\*\|])/gmi, '$1\'\'\'$2');
  str = str.replace(/^(\| *\'\'\'\{\{Flagicon\|[a-z]+\}\} *[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n[\*\|])/gmi, '$1\'\'\'$2');

  str = str.replace(/(\|\| *\{\{Flagicon\|[a-z]+\}\} *\'\'\' *[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\|\|)/gi, '$1\'\'\'$2');
  str = str.replace(/(\|\| *\'\'\'\{\{Flagicon\|[a-z]+\}\} *[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\|\|)/gi, '$1\'\'\'$2');
  str = str.replace(/(\{\{nowrap\| *\'\'\'\{\{Flagicon\|[a-z]+\}\} *[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&\|]+)(\}\})/gi, '$1\'\'\'$2');
  str = str.replace(/(\{\{nowrap\| *\'\'\'\{\{Flagicon\|[a-z]+\}\} *[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&\|]+[\<br\/\> ]+{\{Flagicon\|[a-z]+\}\} *[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&\|]+)(\}\})/gi, '$1\'\'\'$2');
  str = str.replace(/(\{\{nowrap\| *\{\{Flagicon\|[a-z]+\}\} *\'\'\'[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&\|]+[\<br\/\> ]+{\{Flagicon\|[a-z]+\}\} *[\[\]\da-z \-\.\(\)áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&\|]+)(\}\})/gi, '$1\'\'\'$2');

  str = str.replace(/(\{\{flagicon\|[A-Z]+[\|\d]*\}\} *\'\'\'.*\]) *(\n[\*\|])/gmi, '$1\'\'\'$2');
  str = str.replace(/(\'\'\'\{\{flagicon\|[A-Z]+\}\} .*\])(\n[\*\|])/gmi, '$1\'\'\'$2');

  str = str.replace(/(\| *\'\'\'\{\{flagIOC2*athlete\|[\[\da-z \-\.\(\)–áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&\|\]]+\}\})\n/gmi, '$1\'\'\'\n');


  str = str.replace(/(\| *\'\'\'\{\{flagIOC2[\-rt]*\|[a-z]+\|[\[\da-z \-\.\(\)–áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&\|\]]+\}\})\n/gmi, '$1\'\'\'\n');

  str = str.replace(/(\| *\'\'\'\{\{bd\-big\|[a-z ]+\}\})(\n\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\| *\'\'\'\{\{hb[ywj]*\-big\|[a-z ]+\|\d+\}\})(\n\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\| *\'\'\'\{\{hb[ywj]*\-big\|[a-z ]+\}\})(\n\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\| *\'\'\'\{\{[rb][hb][ywm]*\-rt\|[a-z]+\}\})(\n\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\| *\'\'\'\{\{[rb][hb][ywm]*\|[a-z]+\}\})(\n\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\| *\'\'\'\{\{ru\-big\|[a-z]+\}\})(\n\|)/gmi, '$1\'\'\'$2');

  str = str.replace(/^(\|colspan\=\"\d\"\|\{\{Flagicon\|[a-z]+\}\} *\<small\> *[\[\]\da-z \-\.\(\)\'áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n[\*\|])/gmi, '$1\<\/small\>$2');
  str = str.replace(/^(\|\{\{Flagicon\|[a-z]+\}\} *\<small\> *[\[\]\da-z \-\.\(\)\'áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n[\*\|])/gmi, '$1\<\/small\>$2');
  str = str.replace(/^(\|colspan\=\"\d\"\|\{\{Flagicon\|[a-z]+\}\} *\<small\> *[\[\da-z \-\.\(\)\'áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+\|[\]\da-z \-\.\(\)\'áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n[\*\|])/gmi, '$1\<\/small\>$2');
  str = str.replace(/^(\|\{\{Flagicon\|[a-z]+\}\} *\<small\> *[\[\da-z \-\.\(\)\'áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+\|[\]\da-z \-\.\(\)\'áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&]+)(\n[\*\|])/gmi, '$1\<\/small\>$2');

  str = str.replace(/(\|\<\!\-\-ALL\-X\-\-\>\'\'\'\d+) *(\n+\|)/gmi, '$1\'\'\'$2');
  str = str.replace(/(\<\!\-\- *T *\-\-\>\| *\'\'\'\d+) *(\n+\|)/gmi, '$1\'\'\'$2');

  str = str.replace(/(\{\{[Yes\-No]+\|'''[A-Z]+)(\}\})/g, '$1\'\'\'$2');

  //str = str.replace(/\'\'\'(\<\/small\>)/gi, '$1'); // temp for a group of articles

  str = str.replace(/(\<small\>\<center\>Uncredited)\<center\>\<small\>/gi, '$1\<\/center\>\<\/small\>'); //film articles edited by IP

  str = str.replace(/(\d+\.\d+\%\'* \'\'[\d,]+) *(\n)/gmi, '$1\'\'$2');

  str = str.replace(/(\|\&nbsp;\'\'\'OC\&nbsp\;)(\|\|)/gi, '$1\'\'\'$2');
  str = str.replace(/(\|\&nbsp;'''1\&nbsp\;)(\|\|)/gi, '$1\'\'\'$2');
  str = str.replace(/(\|\&nbsp;\'\'\'CC\&nbsp\;)(\|\|)/gi, '$1\'\'\'$2');


  //Darts and tennis articles
  str = str.replace(/(\'\'\(Finals*\)) *(\n)/gmi, '$1\'\'$2');
  str = str.replace(/(\'\'\(First round\)) *(\n)/gmi, '$1\'\'$2');
  str = str.replace(/(\'\'\(Second round\)) *(\n)/gmi, '$1\'\'$2');
  str = str.replace(/(\'\'\(Third round\)) *(\n)/gmi, '$1\'\'$2');
  str = str.replace(/(\'\'\(Fourth round\)) *(\n)/gmi, '$1\'\'$2');
  str = str.replace(/(\'\'\(Semi[\- ]*finals*\)) *(\n)/gmi, '$1\'\'$2');
  str = str.replace(/(\'\'\(Quarter[\- ]*finals*\)) *(\n)/gmi, '$1\'\'$2');
  str = str.replace(/(\'\'\(Runner-Up\)) *(\n)/gmi, '$1\'\'$2');
  str = str.replace(/(^\# *\'\'\'.*\(Champions*\)) *(\n)/gmi, '$1\'\'\'$2');

  //str = str.replace(/ <\/span>/gi, ' ');
  //str = str.replace(/ <\/font>/gi, ' ');

  //Bogus file/image options
  str = str.replace(/(\.jpg\|left\|)none\|/g, '$1');
  str = str.replace(/(\.JPG\|left\|)none\|/g, '$1');
  str = str.replace(/\|thumb(\|\d+px\|thumb\|)/g, '$1');
  str = str.replace(/\|left(\|\d+px\|left)/g, '$1');
  str = str.replace(/(\|none\|\d+px)\|left/g, '$1');
  str = str.replace(/(\[\[image:Rock dove \- natures pics.jpg\|thumb\|)width:320px\|height:100px\|(HELLO\]\])/g, '$1$2');
  str = str.replace(/(\|180px)px(\|thumb)/g, '$1$2');
  str = str.replace(/\|\{\{\#if:\{\{\{size\|\}\}\}\|\{\{\{size\}\}\}\|\d+px\}\}\|frame\|/gi, '\|frame\|');
  str = str.replace(/\| *upright \=/gi, '\|upright\=');
  str = str.replace(/\| *upright\=\|/gi, '\|upright\|');
  str = str.replace(/\|frame\|right\|float\|/gi, '\|frame\|right\|');
  str = str.replace(/\|frame\|left\|float\|/gi, '\|frame\|left\|');
  str = str.replace(/\|мини\|/gi, '\|thumb\|'); //mini, invalid option
  str = str.replace(/\|mini\|/g, '\|thumb\|'); //mini, invalid option, needs to be at the top of this list above thumb|thumb
  str = str.replace(/\|miniatyr\|/gi, '\|thumb\|'); //mini, invalid option
  str = str.replace(/\|thumb\|right\|thumb\|/gi, '\|thumb\|right\|');
  str = str.replace(/\|thumb\|Right\|/g, '\|thumb\|right\|');
  str = str.replace(/\|thumb\|left\|thumb\|/g, '\|thumb\|left\|');
  str = str.replace(/\|thumb\|right\|thumb\|/g, '\|thumb\|right\|');
  str = str.replace(/\|right\|thumb\|left\|/g, '\|right\|thumb\|');
  str = str.replace(/\|center\|thumb\|left\|/g, '\|center\|thumb\|');
  str = str.replace(/\|left\|thumb\|right\|/g, '\|left\|thumb\|');
  str = str.replace(/\|left\|thumb\|left\|/g, '\|left\|thumb\|');
  str = str.replace(/\|left\|thumb\|center\|/g, '\|left\|thumb\|');
  str = str.replace(/\|thumb\|righ\|/g, '\|thumb\|right\|');
  str = str.replace(/\|thumb\|rt\|/g, '\|thumb\|right\|');
  str = str.replace(/\|rt\|thumb\|/g, '\|thumb\|right\|');
  str = str.replace(/\|thump\|/g, '\|thumb\|');
  str = str.replace(/\|thumb\|thumb\|/gi, '\|thumb\|');
  str = str.replace(/\|thumb\|thumbnail\|/gi, '\|thumb\|');
  str = str.replace(/\|frameless\|thumb([\|\]])/gi, '\|frameless$1');
  str = str.replace(/\|frame\|thumb\|/gi, '\|frame\|');
  str = str.replace(/\|thumb\|frame\|/gi, '\|thumb\|');
  str = str.replace(/\|frame\|left\|thumb\|/gi, '\|frame\|left\|');
  str = str.replace(/\|right\|right\|/gi, '\|right\|');
  str = str.replace(/\|right\|125px\|center\]\]/gi, '\|right\|125px\]\]');
  str = str.replace(/\|thumb\|\|/gi, '\|thumb\|');
  str = str.replace(/\|thumbnail\|\|/gi, '\|thumbnail\|');
  str = str.replace(/\|\|thumb\|/gi, '\|thumb\|');
  str = str.replace(/\|\|upright/gi, '\|upright');
  str = str.replace(/\|hochkant\|/gi, '\|upright\|');
  str = str.replace(/\|hochkant\=/gi, '\|upright\=');
  str = str.replace(/\|rahmenlos\|/gi, '\|frameless\|');
  str = str.replace(/\|zentriert\|/gi, '\|center\|');
  str = str.replace(/\|uoright/gi, '\|upright');
  //str = str.replace(/\|upright\|\|/gi, '\|'); //remove upright without a scaling factor, deprecated MOS:UPRIGHT
  str = str.replace(/\|up[rt]ight\|up[rt]ight/gi, '\|upright'); //remove duplicate upright
  str = str.replace(/\|uptigh+t\|/gi, '\|upright\|'); 
  str = str.replace(/\|right\|\|/gi, '\|right\|');
  str = str.replace(/\|left\|\|/gi, '\|left\|');
  str = str.replace(/\|\|right\|/gi, '\|right\|');
  str = str.replace(/\|\|left\|/gi, '\|left\|');
  str = str.replace(/(\|thumb\|right\|\d+px\|)left\|/gi, '$1');
  str = str.replace(/(\|none\|thumb\|\d+px\|)left\|/gi, '$1');
  str = str.replace(/(\|thumb\|none\|)left\|/gi, '$1');
  str = str.replace(/(\|thumb\|left\|)none\|/gi, '$1');
  str = str.replace(/(\|thumb\|right\|)none\|/gi, '$1');
  str = str.replace(/(\|none\|thumb\|)left\|/gi, '$1');
  str = str.replace(/(\|none\|thumb\|)right\|/gi, '$1');
  str = str.replace(/\|righ\|/gi, '\|right\|');
  str = str.replace(/\|ight\|/gi, '\|right\|');
  str = str.replace(/\|праворуч\|/gi, '\|right\|');
  str = str.replace(/\|дясно\|/gi, '\|right\|');
  str = str.replace(/\|справа\|/gi, '\|right\|');
  str = str.replace(/\|rechts\|/gi, '\|right\|');
  str = str.replace(/\|dreta\|/gi, '\|right\|');
  str = str.replace(/\|destra\|/gi, '\|right\|');
  str = str.replace(/\|sağ\|/gi, '\|right\|');
  str = str.replace(/\|derecha\|/gi, '\|right\|');
  str = str.replace(/\|direita\|/gi, '\|right\|');
  str = str.replace(/\|desno\|/gi, '\|right\|');
  str = str.replace(/\|ліворуч\|/gi, '\|left\|');
  str = str.replace(/\|gauche\|/gi, '\|left\|');
  str = str.replace(/\|esquerra\|/gi, '\|left\|');
  str = str.replace(/\|izquierda\|/gi, '\|left\|');
  str = str.replace(/\|שמאל\|/gi, '\|left\|');
  str = str.replace(/\|ממוזער\|/gi, '\|thumb\|');
  str = str.replace(/svg\|bgcolor=silver\|30px\|/gi, 'svg\|30px\|');
  str = str.replace(/svg\|bgcolor=silver\|28px\|/gi, 'svg\|28px\|');
  str = str.replace(/\|60px\|Red Ensign\|United Kingdom/gi, '\|60px\|United Kingdom civil ensign');
  str = str.replace(/\|time=\d+\|/gi, '\|'); //invalid option
  str = str.replace(/\|\d+pcx\|/gi, '\|'); //specifying size is deprecated (MOS:UPRIGHT), and this setting is invalid, so remove instead
  str = str.replace(/\|px *(\d+)\|/gi, '\|'); //specifying size is deprecated, and this setting is invalid, so remove instead
  str = str.replace(/\|upleft\|/gi, '\|'); //remove nonsense "upleft"; upright is deprecated MOS:UPRIGHT
  str = str.replace(/\|float\|/gi, '\|'); //float, invalid option
  str = str.replace(/\|miniatur[ea]*\|/gi, '\|thumb\|'); //mini, invalid option
  str = str.replace(/\|miniaturadeimagen\|/gi, '\|thumb\|'); //mini, invalid option
  str = str.replace(/\|r[ou]ght\|/gi, '\|right\|');
  //str = str.replace(/\|image\|/gi, '\|'); //image, invalid option // commented because it breaks too many template doc pages
  str = str.replace(/\|thumb\|upright\|thumb\|/gi, '\|thumb\|upright\|');
  str = str.replace(/\|upright\|thumb\|upright\|/gi, '\|thumb\|upright\|');
  str = str.replace(/\|right\|thumb\|right\|/gi, '\|thumb\|right\|');
  str = str.replace(/\|center\|none([\|\]])/gi, '\|center$1');
  str = str.replace(/\|center\|right([\|\]])/gi, '\|center$1');
  str = str.replace(/\|centre\|right([\|\]])/gi, '\|center$1');
  str = str.replace(/\|thumb\|right\|frame\|/gi, '\|thumb\|right\|');
  str = str.replace(/\|vertical\|/gi, '\|'); //vertical, invalid option
  str = str.replace(/\|vignette\|/gi, '\|thumb\|'); //vignette, invalid option
  str = str.replace(/\|left\|right\|/gi, '\|left\|');
  str = str.replace(/\|right\|left\|/gi, '\|right\|');
  str = str.replace(/\|border\|border\|/gi, '\|border\|');
  str = str.replace(/\|alternativtext=/gi, '\|alt=');
  str = str.replace(/\|\|(\d+px\|)/gi, '\|$1'); // may have false positives
  str = str.replace(/\|(\d\d\d) *[xp]px\|/gi, '\|$1px\|'); // may have false positives
  str = str.replace(/\|(\d\d)opx\|/gi, '\|$10px\|'); // may have false positives
  str = str.replace(/\|(\d)o(\d)px\|/gi, '\|$10$2px\|'); // may have false positives
  str = str.replace(/\|(\d)oopx\|/gi, '\|$100px\|'); // may have false positives
  str = str.replace(/(\|thumb)\|widthpx\| *(\]\])/gi, '$1$2'); 
  str = str.replace(/\|widthpx\|/gi, '\|'); // may have false positives
  str = str.replace(/\|smallpx\|/gi, '\|'); // may have false positives
  str = str.replace(/\|mediumpx\|/gi, '\|'); // may have false positives
  str = str.replace(/\|thumbpx\|/gi, '\|'); // may have false positives
  str = str.replace(/\|bigpx\|/gi, '\|'); // may have false positives
  str = str.replace(/\|minipx\|/gi, '\|'); // may have false positives
  str = str.replace(/\|(\d+) *px *(\d+) *px/gi, '\|$1x$2px'); // may have false positives
  str = str.replace(/\|(\d+) *[×\*X] *(\d+) *px/g, '\|$1x$2px'); // may have false positives
  str = str.replace(/\|(\d+) +[x] +(\d+) *px/gi, '\|$1x$2px'); // may have false positives
  str = str.replace(/\|(\d+)\.\d+x(\d+)\.\d+ *px/gi, '\|$1x$2px'); // may have false positives
  str = str.replace(/\|(\d+)\.\d+ *px/gi, '\|$1px'); // may have false positives
  str = str.replace(/(\|\s*[log_imaep]+alt\s*\=\s*)\d+px/gi, '$1'); // for infoboxen; may have false positives
  str = str.replace(/(\{\{tick\|\d+)px(\}\})/gi, '$1$2'); // fix pxpx error
  str = str.replace(/(\[\[[Imagfl]+e:[a-z ]+.[sp][nv]g\|\d+px)\|✓(\|[Featured articleDid you knowGoodlist\?]+\]\])/gi, '$1$2'); 
  str = str.replace(/(\[\[Image:Emblem\-very\-very\-evil.svg\|15)p(x25px\|)/gi, '$1$2'); 
  str = str.replace(/(\nFile:.+)\|thumb(\|.*\n)/gmi, '$1$2');  //replace thumb in gallery
  str = str.replace(/(\nFile:.+)\|thumb(\|.*\n)/gmi, '$1$2');  //replace thumb in gallery (again for consecutive lines)
  str = str.replace(/(\nImage:.+)\|thumb(\|.*\n)/gmi, '$1$2');  //replace thumb in gallery
  str = str.replace(/(\nImage:.+)\|thumb(\|.*\n)/gmi, '$1$2');  //replace thumb in gallery (again for consecutive lines)

  //div-span-flip error
  str = str.replace(/\{\{nowrap\|(\{\{marriage *\|[\s\,a-z\d\[\]\-\(\) \>\<\=\.\/\|áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?]+)\}\}/gi, '$1');
  str = str.replace(/\<span class\=\"plainlinks\"\>(<references\/\>)\<\/span\>/gi, '$1');
  str = str.replace(/\<span class\=\"plainlinks\"\>(\{\{reflist\}\})\<\/span\>/gi, '$1');
  //str = str.replace(/\{\{hidden\|\|(.*}})}}/gi, '$1'); -- hidden content is sometimes OK
  str = str.replace(/\{\{no *wrap\|(\{\{[hplainflatlistunbulleted ]+)\|/gi, '$1\|class\=nowrap\|');
  str = str.replace(/\<span style\=\"(font\-size\:110\%\; font\-weight\:bold\;)\"\>(\{\{Plainlist\|)\n([\{\}a-z\d\/\*\:\'\n ]+)\<\/span\>/gmi, '$2style\=$1\|\n$3');

  //small tag or template wrapping multiple lines
  str = str.replace(/(\{\{small)\|(\{\{[hplainflatlistunbulleted ]+\|)/gi, '$1div\|$2');
  str = str.replace(/(\{\{small)\|(\{\{legend\|)/gi, '$1div\|$2');
  str = str.replace(/(\{\{small)(\|\n\*)/gmi, '$1div$2');


  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\> *(\n[\*\#\;].*)\n*<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');

  str = str.replace(/\<small\>(\'\'\'Key\'\'\': *\n\*.*\n)<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\>(\'\'\'Key\'\'\': *\n\*.*\n\*.*\n)<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\>(\'\'\'Key\'\'\': *\n\*.*\n\*.*\n\*.*\n)<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\>(\'\'\'Key\'\'\': *\n\*.*\n\*.*\n\*.*\n\*.*\n)<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\>(\'\'\'Key\'\'\': *\n\*.*\n\*.*\n\*.*\n\*.*\n\*.*\n)<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');
  str = str.replace(/\<small\>(\'\'\'Key\'\'\': *\n\*.*\n\*.*\n\*.*\n\*.*\n\*.*\n\*.*\n)<\/small\>/gmi, '\{\{smalldiv\|1=$1\}\}');

  str = str.replace(/\;\<small\>(Notes *\n.*)<\/small\>/gmi, '\{\{smalldiv\|1=;$1\}\}');

  str = str.replace(/\<strike\>/gi, '\<s\>');
  str = str.replace(/\<\/strike\>/gi, '\<\/s\>');

  //strikethroughdiv to replace misnested s tags (not better, probably suffers from LISTGAP)
  //str = str.replace(/^([:\*]+)\<s\>(.*\n[:\*\#\;].*)<\/s\>/gmi, '\{\{strikethroughdiv\|1=$1$2\}\}');
  //str = str.replace(/^([:\*]+)\<s\>(.*\n[:\*\#\;].*\n[:\*\#\;].*)<\/s\>/gmi, '\{\{strikethroughdiv\|1=$1$2\}\}');
  //str = str.replace(/^:\<s\>(.*\n[:\*\#\;].*)<\/s\>/gmi, '\{\{strikethroughdiv\|1=:$1\}\}');


  //Fix RfD pages (my slightly bad template to the new completely fixed one)
  //str = str.replace(/\'\'(\(\@subpage\))\'\'(|\<span class\=\"plainlinks\"\>\[)/gi, '$1$2');

  //font wrapping links - move inside link and convert to span tag - hex with #
  str = str.replace(/<font +colou*r=["']* *(#[a-f\d]+)["']*>(\[\[User:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:$1;">$3<\/span>$4');
  str = str.replace(/<font +colou*r=["']* *(#[a-f\d]+)["']*>(\[\[Special:Contributions\/[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:$1;">$3<\/span>$4');
  str = str.replace(/<font +colou*r=["']* *(#[a-f\d]+)["']*>(\[\[User[ _]talk:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:$1;">$3<\/span>$4');

  //font wrapping links - move inside link and convert to span tag - hex without #
  str = str.replace(/<font +colou*r=["']* *([a-f\d]+)["']*>(\[\[User:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:#$1;">$3<\/span>$4');
  str = str.replace(/<font +colou*r=["']* *([a-f\d]+)["']*>(\[\[Special:Contributions\/[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:#$1;">$3<\/span>$4');
  str = str.replace(/<font +colou*r=["']* *([a-f\d]+)["']*>(\[\[User[ _]talk:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:#$1;">$3<\/span>$4');

  //font wrapping links - move inside link and convert to span tag - alpha and spaces (excludes some colors to avoid false hex positives)
  str = str.replace(/<font +colou*r=["']* *([a-z]+[g-z][a-z ]+)["']*>(\[\[User:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:$1;">$3<\/span>$4');
  str = str.replace(/<font +colou*r=["']* *([a-z]+[g-z][a-z ]+)["']*>(\[\[Special:Contributions\/[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:$1;">$3<\/span>$4');
  str = str.replace(/<font +colou*r=["']* *([a-z]+[g-z][a-z ]+)["']*>(\[\[User[ _]talk:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:$1;">$3<\/span>$4');
  str = str.replace(/<font +colou*r=["']* *([g-z][a-z ]+)["']*>(\[\[User:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:$1;">$3<\/span>$4');
  str = str.replace(/<font +colou*r=["']* *([g-z][a-z ]+)["']*>(\[\[Special:Contributions\/[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:$1;">$3<\/span>$4');
  str = str.replace(/<font +colou*r=["']* *([g-z][a-z ]+)["']*>(\[\[User[ _]talk:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$2<span style="color:$1;">$3<\/span>$4');


  //font wrapping links - move inside link and convert to span tag - with font face
  str = str.replace(/<font +colou*r=["']* *([#a-z\d ]+)["']* +face="* *([a-z ]+)"*>(\[\[User:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$3<span style="color:$1; font-family:\'$2\';">$4<\/span>$5');
  str = str.replace(/<font +colou*r=["']* *([#a-z\d ]+)["']* +face="* *([a-z ]+)"*>(\(*\[\[User[ _]talk:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\]\)*)<\/font *>/gi, '$3<span style="color:$1; font-family:\'$2\';">$4<\/span>$5');

  str = str.replace(/<font face="* *([a-z ]+)"* +colou*r=["']* *([#a-z\d ]+)["']*>(\[\[User:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\])<\/font *>/gi, '$3<span style="color:$2; font-family:\'$1\';">$4<\/span>$5');
  str = str.replace(/<font face="* *([a-z ]+)"* +colou*r=["']* *([#a-z\d ]+)["']*>(\(*\[\[User[ _]talk:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)(\]\]\)*)<\/font *>/gi, '$3<span style="color:$2; font-family:\'$1\';">$4<\/span>$5');

  //replace font tag in user and user talk links with span tag, while I'm here
  str = str.replace(/\<\/font face>/gi, '\<\/font\>'); // trim closing font face tag
  str = str.replace(/\<\/font col+[ao]r>/gi, '\<\/font\>'); // trim closing font color tag
  str = str.replace(/\<\/font face color>/gi, '\<\/font\>'); // trim closing font face color tag
  str = str.replace(/\<\/font size>/gi, '\<\/font\>'); // trim closing font size tag

  str = str.replace(/\<font( style\=\"background:[a-z]+\"\>\'+bd2412\'+\<\/)font *>/gi, '\<span$1span\>'); //specific user's sig

  str = str.replace(/(\[\[User:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)<font +colou*r *= *["']* *([#a-z\d ]+)["']*>([a-z\d_— \'&;:!°\.#\(\)\-\?ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録✉]+)<\/font *> *(\]\])/gi, '$1<span style="color:$2;">$3<\/span>$4');
  str = str.replace(/(\[\[User[ _]talk:[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿✉]+\|)<font +colou*r *= *["']* *([#a-z\d ]+)["']*>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?⊕⊗会話投稿記録✉]+)<\/font *> *(\]\])/gi, '$1<span style="color:$2;">$3<\/span>$4');
  str = str.replace(/(\[\[Special:Contributions\/[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+\|)<font +colou*r *= *["']* *([#a-z\d ]+)["']*>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *> *(\]\])/gi, '$1<span style="color:$2;">$3<\/span>$4');

  //replace all deprecated font color tags enclosing untagged text
  str = str.replace(/<font +colou*r *= *["']* *([#a-z\d ]+)["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\@\!\?\&⊕⊗会話投稿記録日本穣投稿րևանցիԵ•✉☒☺✍♥♦]+)<\/font *>/gi, '<span style="color:$1;">$2<\/span>');
  str = str.replace(/<font style="colou*r:["']* *([#a-z\d ]+)["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\@\!\?\&⊕⊗会話投稿記録日本穣投稿րևանցիԵ•✉☒☺✍♥♦]+)<\/font *>/gi, '<span style="color:$1;">$2<\/span>');
  str = str.replace(/<font +colou*r *= *["']* *([#a-z\d ]+)["']* size="*([\dpxem\. ]+)"* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\@\!\?\&⊕⊗会話投稿記録日本穣投稿րևանցիԵ•✉☒☺✍♥♦]+)<\/font *>/gi, '<span style="color:$1; font-size:$2;">$3<\/span>');
  str = str.replace(/<font face *= *"* *([a-z ]+)"* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\@\!\?\&⊕⊗会話投稿記録日本穣投稿րևանցիԵ•✉☒☺✍♥♦]+)<\/font *>/gi, '<span style="font-family:\'$1\';">$2<\/span>');
  str = str.replace(/<font +colou*r *= *["']* *([#a-z\d ]+)["']* face= *"* *([a-z ]+)"* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\@\!\?\&⊕⊗会話投稿記録日本穣投稿րևանցիԵ•✉☒☺✍♥♦]+)<\/font *>/gi, '<span style="color:$1; font-family:\'$2\';">$3<\/span>');
  str = str.replace(/<font face= *"* *([a-z ]+)"* colou*r *= *["']* *([#a-z\d ]+)["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\@\!\?\&⊕⊗会話投稿記録日本穣投稿րևանցիԵ•✉☒☺✍♥♦]+)<\/font *>/gi, '<span style="font-family:\'$1\'; color:$2;">$3<\/span>');
  str = str.replace(/<font style *= *"color:([#a-z\d ]+);" *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\@\!\?\&⊕⊗会話投稿記録日本穣投稿րևանցիԵ•✉☒☺✍♥♦]+)<\/font *>/gi, '<span style="color:$1;">$2<\/span>');
  str = str.replace(/<font style *= *"([:#a-z\d ;\.\-]+)" *>([a-z\d_— \'’&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\@\!\?\&⊕⊗会話投稿記録日本穣投稿րևանցիԵ•✉☒☺✍♥♦]+)<\/font *>/gi, '<span style="$1">$2<\/span>');


  //replace all deprecated font size tags enclosing untagged text
//<span style="font-size: xx-small;">  	(replacement for font size = 0 or -3)
//<span style="font-size: x-small;">  	(replacement for font size = 1 or -2)
//<span style="font-size:small"> 	(replacement for font size = 2 or -1)
//<span style="font-size:medium"> 	(replacement for font size = 3)
//<span style="font-size:large">  (replacement for font size = 4 or +1)
//<span style="font-size:x-large">  (replacement for font size = 5 or +2)
//<span style="font-size:xx-large">  (replacement for font size = 6 or +3)
//<span style="font-size: 378%">   (replacement for font size = 7 or +4 or higher)

  str = str.replace(/<font size *= *["']* *0 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:xx-small;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *\-3 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:xx-small;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *1 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:x-small;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *\-2 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:x-small;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *2 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:small;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *\-1 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:small;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *3 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:medium;">$1<\/span>');

  str = str.replace(/<font size *= *["']* *4 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:large;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *\+1 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:large;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *5 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:x-large;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *\+2 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:x-large;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *6 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:xx-large;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *\+3 *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:xx-large;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *[789] *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:378%;">$1<\/span>');
  str = str.replace(/<font size *= *["']* *\+[456789] *["']* *>([a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿]+)<\/font *>/gi, '<span style="font-size:378%;">$1<\/span>');


  //replace all deprecated font color tags enclosing tagged text
  str = str.replace(/<font +colou*r *= *["']* *([#a-z\d ]+)["']* *>(<[subpmali]+>[a-z\d_— \'&;:!°\.#ταλκ\(\)\-\?\.,\!ößáàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?\&⊕⊗会話投稿記録日本穣投稿♦]+<\/[subpmali]+>)<\/font *>/gi, '<span style="color:$1;">$2<\/span>');

  //replace deprecated tt tags next to nowiki tags
  str = str.replace(/\<tt\> *(\<nowiki\>)/gi, '\<code\>$1');
  str = str.replace(/(\<\/nowiki\>) *\<\/tt\>/gi, '$1\<\/code\>');
  //replace deprecated tt tags with code tags (not always appropriate)
  //str = str.replace(/\<tt\>/gi, '\<code\>');
  //str = str.replace(/\<\/tt\>/gi, '\<\/code\>');

  //replace deprecated tt tags as emoticons
  str = str.replace(/\<tt\>([:;][DP\/\)\(\-]+)\<\/tt\>/gi, '\{\{mono\|$1\}\}');

  //other tt tags
  str = str.replace(/<tt><\/tt>/gi, '');
  str = str.replace(/<tt>(#wikimedia\-pa)<\/tt>/gi, '<kbd>$1<\/kbd>');
  str = str.replace(/<tt>(&lt;noinclude>&#123;{transclusionless}}&lt;\/noinclude>)<\/tt>/gi, '<code>$1<\/code>');
  str = str.replace(/<tt>({{<nowiki>subst:<\/nowiki>\[\[User:Meaghan\/Sunshine\]\]}})<\/tt>/gi, '<code>$1<\/code>');
  str = str.replace(/(<nowiki>{{db\-g12\|url=<\/nowiki><)tt(>URL of source<\/)tt(>}})/gi, '$1kbd$2kbd$3');

// add closing center tag within table rows (up to 10 times)
var loopcount = 0;
while( str.search(/(\| *\<center\>((?!\<\/center\>).)*)(\|\|)/gi) >= 0 && loopcount <= 15 ) { //'
str = str.replace(/(\| *\<center\>((?!\<\/center\>).)*)(\|\|)/gi, '$1\<\/center\>$3'); //'
loopcount++;
}
  
  str = str.replace(/(\| *\<center\>((?!\<\/center\>).)*)(\n)/gi, '$1\<\/center\>$3'); 

  //str = str.replace(/(\| *\<span style((?!\<\/span\>).)*)(\|\|)/gi, '$1\<\/span\>$3'); //too greedy, need to get just the next pipes
  str = str.replace(/\'\'\'(\[\[Image:Cscr-featured.svg\|left\|30px\|This star symbolizes the featured content on Wikipedia\.\]\])(\[\[Wikipedia:Featured pictures\|Featured picture\]\]\'\'\')/gi, '$1\'\'\'$2');
  str = str.replace(/(\| *style\=\"[a-z\:\;\#\d]+\" *\| *\'\'\'[\d–\-]+)(\n)/gi, '$1\'\'\'$2');
  str = str.replace(/(\| *bgcolor\=\"*[a-z\:\;\#\d]+\"* *\| *\'\'\'[\d–\-]+)(\n)/gi, '$1\'\'\'$2');
  str = str.replace(/(\| *bgcolor\=\"*[a-z\:\;\#\d]+\"* *\| *\'\'\'[\. \w\]\[\-–áàăâåäãāảạæćČçĐéèêếềễěëėęēệíìîïİįīịıĽńñóòôỗöõøōơờọœřšŞúùûüũūưứýỳ¡§:\!\?]+)(\n)/gi, '$1\'\'\'$2'); 
  str = str.replace(/(\| *style\=\"*[a-z\:\;\#\d\;]+\"* *\| *\'\'\'[\. \w\]\[\-–msng:\!\?]+)(\n)/gi, '$1\'\'\'$2'); 

//  str = str.replace(/(\| *bgcolor\=\"*[a-z\:\;\#\d]+\"* *\| *\'\'\'[ \p{L}\]\[\-–]+)(\n)/gi, '$1\'\'\'$2'); // \p{L} should match "any Unicode letter", but it's not working. 

  str = str.replace(/(All-Ireland Senior Camogie Championship [\d]+)\'\'\'/gi, '$1');

  str = str.replace(/\{\| width\=100\% style\=\"font-size\: 90\%\"(\n\'\'\'MATCH RULES\'\'\'\n\*\d0 minutes\n\*Replay if [a-z ]+\n\*Maximum of \d substitution[a-z ]+\n)\|\}/gi, '\<div style\=\"font-size: 90\%\"\>$1\<\/div\>');

  //Fix line breaks so that I can see the syntax problems (no longer needed with voidTags setting in vector.js)
  //str = str.replace(/\<br\s*\>/gi, '\<br \/\>');
  //str = str.replace(/\<hr\s*\>/gi, '\<hr \/\>');

  //Fix my bad regexes that don't add # before colors
  str = str.replace(/(\<span style\=\"color:)([a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9])/gi, '$1\#$2');

  //Individual signatures that result from partial font tag replacements above

  str = str.replace(/(\[\[User:LiveRail\|<span style="font\-variant:small\-caps"><span style="color:green;">Live<\/span><span style="color:Red;">Rail<\/span>)(\]\]&nbsp;\[\[User talk:LiveRail\|<font color="blue">&lt;&nbsp;\'\'\'Talk\'\'\'&nbsp;&gt;)(\]\])(<\/font>)(<\/span>)/gi,'$1$5$2$4$3');
  str = str.replace(/<font color="(blue">&lt;&nbsp;\'\'\'Talk\'\'\'&nbsp;&gt;<\/)font>/gi,'<span style="color:$1span>');

  return str;
}
 
function autoEdFunctions8() { //Activates individual modules when "auto ed" tab is clicked
    var $textbox = $( '#wpTextbox1' );  //This number 1 stays a 1. Do not increment it.
    var txt = $textbox.textSelection('getContents');
    txt = ReplaceDOI(txt);
    $textbox.textSelection('setContents', txt);
}
 
//</syntaxhighlight>

Leave a Reply