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.
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/';
}
 
mw.loader.load(AutoEd_baseurl + 'core4.js'); //Imports the "framework" script needed to make this function

//Sets variable configuration
autoEdTag4 = "Fix empty citation, unnamed or unsupported parameter, or invalid parameter value using [[WP:AutoEd|AutoEd]]; see [[Help:CS1 errors]]"; //Tweaks edit summary
autoEdLinkName4 = "AutoEd unnamed"; //Changes the link name at the top of the page
autoEdLinkHover4 = "Run AutoEd to fix unnamed parameter"; //When user hovers over link

//Set up function
function ReplaceUnnamed(str) { //function to replace unnamed and unsupported parameters
 
  //Remove {{Template: (Content Translator bug)
  str = str.replace(/{{Templinate:/gi, '{{');
  
  //Change to canonical template name
  str = str.replace(/(\{\{)\s*web\s*cite(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/(\{\{)\s*cite we(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/(\{\{)\s*cite eb(\s*\|)/gi, '$1cite web$2');
  
  //Fix language= 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lang[uage]*\s*=\s*)anglès\s*([\}\|])/gi, '$1$2English$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lang[uage]*\s*=\s*)ingl[êée]s\s*([\}\|])/gi, '$1$2English$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lang[uage]\s*=\s*)en-[usgbin]+\s*([\}\|])/gi, '$1$2English$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lang[uage]*\s*=\s*)engelska\s*([\}\|])/gi, '$1$2English$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lang[uage]*\s*=\s*)espa[ñn]h*ol\s*([\}\|])/gi, '$1$2Spanish$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lang[uage]*\s*=\s*)francès\s*([\}\|])/gi, '$1$2French$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lang[uage]*\s*=\s*)castellà\s*([\}\|])/gi, '$1$2Spanish$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lang[uage]*\s*=\s*)Français\s*([\}\|])/gi, '$1$2French$3');

  //Fix mode= and other case-sensitive parameters using upper case letters 
  str = str.replace(/(\|\s*mode\s*=\s*)CS1\s*([\}\|])/g, '$1cs1$2');
  str = str.replace(/(\|\s*mode\s*=\s*)CS2\s*([\}\|])/g, '$1cs2$2');
  str = str.replace(/(\|\s*nopp\s*=\s*)Y\s*([\}\|])/g, '$1y$2');
  str = str.replace(/(\|\s*)dead\-*url(\s*=\s*)Y[es]*(\s*[\}\|])/gi, '$1url-status$2dead$3'); //replace regardless of case
  str = str.replace(/(\|\s*)dead\-*url(\s*=\s*)No*(\s*[\}\|])/gi, '$1url-status$2live$3'); //replace regardless of case
  str = str.replace(/(\|\s*)dead\-*url(\s*=\s*)ja*(\s*[\}\|])/gi, '$1url-status$2dead$3'); //replace regardless of case
  str = str.replace(/(\|\s*)dead\-*url(\s*=\s*)unfit(\s*[\}\|])/gi, '$1url-status$2unfit$3'); 
  str = str.replace(/(\|\s*)dead\-*url(\s*=\s*)usurped(\s*[\}\|])/gi, '$1url-status$2usurped$3'); 
  str = str.replace(/(\|\s*last-*author-*amp\s*=\s*)Y\s*([\}\|])/g, '$1y$2');
  str = str.replace(/(\|\s*url-status\s*=\s*)alive(\s*[\}\|])/gi, '$1live$2'); //fix for IABot typo


  //Remove |p 
  // str = str.replace(/\|p \|/g, '\|');
  //Add url=
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*=*(http)/gi, '$1\|url=$2'); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*url\s*)\|*(http)/gi, '$1$2=$3');
  str = str.replace(/cite url\s*\|\s*web=/gi, 'cite web\| url=');  
  //Replace |http with |url=http in citations
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*http/g, '$1\|url=http');  

  //Replace |url=-http with |url=http in citations
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*url\s*=)\s*-(http)/gi, '$1$2$3');
  
  //Add missing cite web and other failed template typos
  str = str.replace(/({{)\s*(url\s*=\s*http)/gi, '$1cite web\|$2');
  str = str.replace(/({{)\s*(url)\s*(http)/gi, '$1cite web\|$2\=$3');
  str = str.replace(/({{)\s*(https*:\/\/)/gi, '$1cite web\|url\=$2');
  str = str.replace(/({{cite web)[\/\[\\\s]*(url)/gi, '$1\|$2');
  str = str.replace(/({{cite web)[\/\[\\\s]*(http)/gi, '$1\|url\=$2');
  str = str.replace(/({{cite)[\/\[\\\s]*(url)/gi, '$1 web\|$2');
  str = str.replace(/({{cite)[\/\[\\\s]*(http)/gi, '$1 web\|url\=$2');

  //Delete extraneous Japanese word "book" 
  str = str.replace(/{{\s*[Cc]ite book\|\s*\u548c\u66f8/g, '{{cite book'); 
  
  //Replace isbn10 followed by isbn
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*is[nb]+10\s*=\s*[\d-X]+\s*(\|\s*isbn\s*=\s*[\d-]+\s*[\}\|])/gi, '$1$2');

  //Replace id=ISSN
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*id\s*=\s*\{\{ISSN\|([\d-X]+)\}\}\s*/gi, '$1\|issn=$2');

  //Fix param followed by hyphen or colon
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*access-*date)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*archive-*date)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*archive-*url)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*asin)[\+\:]/gi, '$1$2=');//no hyphen (asin-tld OK)
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*author\d*)[\+\-\:](\s*[a-egkn-rt-z])/gi, '$1$2=$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*date)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi)[\+\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi)[\-\s]*(\d)/gi, '$1$2=$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*edition)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*first\d*)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*isbn\d*)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*last\d*)[\+\-\:]([\sb-z]+)/gi, '$1$2=$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lang[uage]*\d*)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*page\d*)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*pages\d*)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}li{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*pmid)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*publisher)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*title)[\+-\:](\s*[a-kn-z])/gi, '$1$2=$3');//title-link OK
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*type)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*url)[\+\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*url)\-h/gi, '$1$2=h');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*volume\d*)[\+\-\:]/gi, '$1$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*work)[\+\-\:]/gi, '$1$2='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*year)[\+\-\:]/gi, '$1$2='); 
   
  //Fix other common param errors
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*a+c+e+d+a+t+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*aa+c+e+s+d+a+t+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*a+c+e+s+-*d+s+a+t+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*accc+e+ss+-*d+a+t+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+ee+ss+-*d+a+t+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+ss+-*d+a+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s-*d+a+t+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+ss+-*d+a+t+\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+ss+\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s+-*[a-rt-z _]+-*d+at+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s+-*at+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s+-*da+re\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s+-*d+a+t+a\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Ac+e+s+-*d+at+e\s*=/g, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s+-*d+at+ee+\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s+-*d+att+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s+-*d[a-z]+a+t+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s+-*d+t+a*e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*accessed\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+s+e+-*d+at+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+e+sss+-*d+at+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+s+[a-z]*-*d+at+e\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ace+s+-*d+a+t+e+\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*address\s*=/gi, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*air date\s*=/gi, '$1\|air-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*albumlink\s*=/gi, '$1\|title-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Archivedate\s*=/g, '$1\|archive\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*achive *date\s*=/gi, '$1\|archive\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*arhive *date\s*=/gi, '$1\|archive\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archive[ oe_]+date\s*=/gi, '$1\|archive\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archiv[ o_]*-*dat[eum]+\s*=/gi, '$1\|archive\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archiveate\s*=/gi, '$1\|archive\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archvi*edate\s*=/gi, '$1\|archive\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archive[ oe_]+url\s*=/gi, '$1\|archive\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archiv[ o_]*-*url\s*=/gi, '$1\|archive\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archieurl\s*=/gi, '$1\|archive\-url=');
  //comment "artist"; too many false positives from "template:cite certification"
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*artist\s*=/gi, '$1\|others=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*arXiv\s*=/g, '$1\|arxiv=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*auhor\s*=/gi, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*auhtor\s*=/gi, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*auth[a-np-z]r\s*=/gi, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Authors*\s*=/g, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Author(\d+)\s*=/g, '$1\|author$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*author (\d)+\s*=/gi, '$1\|author$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*a+u+[a-z]+t+h+o+r+\s*=/gi, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*a+u+t+h+o+[a-z]+r+\s*=/gi, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*author[ _]+link\s*=/gi, '$1\|author\-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Author-*link\s*=/g, '$1\|author\-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*c+a+r+o+g+r+a+p+h+y+\s*=/gi, '$1\|cartography=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*c+a+r+t+[a-np-z]+o+g+r+a+p+h+[ery]*\s*=/gi, '$1\|cartography=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*c+a+r+t+o+g+r+a+[a-oq-z]+p+h*[ery]*\s*=/gi, '$1\|cartography=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*c+a+r+t+o+g+r+a+p+h+e+r+\s*=/gi, '$1\|cartography=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*channel\s*=/gi, '$1\|network='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Chapter\s*=/g, '$1\|chapter=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Citeseerx\s*=/g, '$1\|citeseerx=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*city\s*=/gi, '$1\|location='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Conference\s*=/g, '$1\|conference=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*consulted on\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dare*\s*=/gi, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dat[a-df-z]*\s*=/gi, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dead\s*=/gi, '$1\|dead\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*deadlink\s*=/gi, '$1\|dead\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dead[ a-z]+url\s*=/gi, '$1\|dead\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dtae\s*=/gi, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dte\s*=/gi, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*date *accessed\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*date *published\s*=/gi, '$1\|publication-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*date *retrieved\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Date\s*=/g, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*distributor\s*=/gi, '$1\|publisher='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*doi_brokendate\s*=/g, '$1\|doi-broken-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*doi_inactivedate\s*=/g, '$1\|doi-inactive-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Edition\s*=/g, '$1\|edition=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Editors*\s*=/g, '$1\|editor=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Editor(\d)\s*=/g, '$1\|editor$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*editoi*n\s*=/gi, '$1\|edition=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*episode link\s*=/gi, '$1\|episode-link=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*eprint=\s*\d+\.\d+\s*\|\s*/gi, '$1\|');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Format\s*=/g, '$1\|format=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*foramt\s*=/gi, '$1\|format='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*fir[a-rt-z]t\s*=/gi, '$1\|first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*F[ir]+[st](\d)*\s*=/gi, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*First(\d*)\s*=/g, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*fisr*t(\d)*\s*=/gi, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*frist*\s*=/gi, '$1\|first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*frist*(\d)+\s*=/gi, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*first (\d)+\s*=/gi, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*first\s*name\s*=/gi, '$1\|first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*first[a-z]+\s*=/gi, '$1\|first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ibsn\s*=/gi, '$1\|isbn=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*in\s*=/gi, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*isnb[13]*\s*=/gi, '$1\|isbn=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*isbn10\s*=/gi, '$1\|isbn=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Issue\s*=/g, '$1\|issue=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Journal\s*=/g, '$1\|journal=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*jorunal\s*=/g, '$1\|journal=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lang\s*=/gi, '$1\|language='); //lang is a valid alias now
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*l+a+n+gg+u+a+g+e+\s*=/gi, '$1\|language='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*loation\s*=/gi, '$1\|location='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*locaton\s*=/gi, '$1\|location='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lan*g*a*uge\s*=/gi, '$1\|language='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*la[ng]uage\s*=/gi, '$1\|language='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Language\s*=/g, '$1\|language='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*languag[a-z]e\s*=/gi, '$1\|language='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lastl\s*=/gi, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Last(\d*)\s*=/g, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*last (\d)+\s*=/gi, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*last\s*name\s*=/gi, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*locale\s*=/gi, '$1\|location='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*l+o+c+a+t+i+o+nn+\s*=/gi, '$1\|location='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Location\s*=/g, '$1\|location='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*loaction\s*=/gi, '$1\|location=');    
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*locatoin\s*=/gi, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lsat(\d*)\s*=/gi, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*msg-id\s*=/gi, '$1\|message-id=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*mailing list\s*=/gi, '$1\|mailing-list=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*maill+inglist\s*=/gi, '$1\|mailing-list=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ncid\s*=/gi, '$1\|id=NCID ');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*name-list-format\s*=/gi, '$1\|name-list-style=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Network\s*=/g, '$1\|network='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*netwrok\s*=/gi, '$1\|network='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*newgroups*\s*=/gi, '$1\|newsgroup=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ne[ws]paper\s*=/gi, '$1\|newspaper=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*news[a-z \-_]+paper\s*=/gi, '$1\|newspaper=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*news\s*=/gi, '$1\|newspaper=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*newsgroups\s*=/gi, '$1\|newsgroup=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Newspaper\s*=/g, '$1\|newspaper=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Number\s*=/g, '$1\|number=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*other\s*=/gi, '$1\|others=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*pagees\s*=/gi, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Page\s*=/g, '$1\|page=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Pages\s*=/g, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*pbulisher\s*=/g, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p[a-tv-z]blisher\s*=/g, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Place\s*=/g, '$1\|place=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*pmcid\s*=/g, '$1\|pmc=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ps\s*=/gi, '$1\|postscript=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*pub\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+l+i+s+h+e+r+[a-z]+\s*=/gi, '$1\|publisher=');  
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+[a-z]+b+l+i+s+h+e+r+[a-z]*\s*=/gi, '$1\|publisher='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*[a-oq-z\d]+p+u+b+l+i+s+h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+[a-z]*l+i+[a-rt-z]*h+s*e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+[a-km-z;]*i+s+h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+i+l+s+h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+l+i+s+e+h*r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+l+i+s+h+e+rr+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+l+i+s+[a-z]+h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+l+i+s+[a-z]*h+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+l+i+[a-z]+s+h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*publis[a-gi-z]*er[a-z\d]*\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*publisher[a-z\d]+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*publishe\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+l+i+s+h+i+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+l+[a-hj-z]*s+h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+b+l+s+i+[a-z]*h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+[a-z]+u+b+l+i+s+h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Publisher\s*=/g, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+l+b+i+s+h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*pulbication-place\s*=/gi, '$1\|publication-place=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p+u+[ac-z]*l+i+s+h+e+r+\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Quote\s*=/g, '$1\|quote=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Ref\s*=/g, '$1\|ref=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*retrieved\s*=/gi, '$1\|access\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*scal\s*=/gi, '$1\|scale=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ss+c+a+l+e*\s*=/gi, '$1\|scale=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Season\s*=/g, '$1\|season=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Series\s*=/g, '$1\|series=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*series link\s*=/gi, '$1\|series-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*service\s*=/gi, '$1\|agency=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Station\s*=/g, '$1\|station='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*template doc demo\s*=/g, '$1\|template-doc-demo=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*t+i+[a-su-z]*l+e\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*t+i+t+[el]\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*t+i+t+e+l+\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*t+i+t[a-z]l+e+\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*t+i+t[a-km-z]+e+\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*t+[a-hj-z]+t+l+e+\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Title\s*=/g, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*title[ -_]*trans\s*=/gi, '$1\|trans-title='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*trans *chapter\s*=/gi, '$1\|trans-chapter=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*trans_chapter\s*=/g, '$1\|trans-chapter=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*trans_title\s*=/g, '$1\|trans-title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*trans *titl*e\s*=/gi, '$1\|trans-title='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Type\s*=/g, '$1\|type=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ublisher\s*=/gi, '$1\|publisher='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*rl\s*=/gi, '$1\|url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ulr\s*=/gi, '$1\|url='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ur[a-kmz\d]*\s*=/gi, '$1\|url='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ur[a-z\d]+l\s*=/gi, '$1\|url='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*urlmap\s*=/gi, '$1\|map-url='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*url)(status\s*=)/g, '$1-$2'); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*u[a-qs-z]r*l\s*=/gi, '$1\|url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*u[a-qs-z]r*l\s*=/gi, '$1\|url=');
  str = str.replace(/({{\s*[cC]ite(?! court)(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*vol\s*=/gi, '$1\|volume=');
  str = str.replace(/({{\s*[cC]ita(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*vol\s*=/gi, '$1\|volume=');
//  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*vol\s*=/gi, '$1\|volume=');  breaks cite court
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Volume\s*=/g, '$1\|volume='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*web si*te\s*=/gi, '$1\|website='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Website\s*=/g, '$1\|website='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*web[si]te\s*=/gi, '$1\|website='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*webiste\s*=/gi, '$1\|website='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*w[a-z\d]ork\s*=/gi, '$1\|work='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*wokr\s*=/gi, '$1\|work='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*work[a-z]+\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*wo[a-qs-z]k\s*=/gi, '$1\|work='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*wprl\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Work\s*=/g, '$1\|work='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Year\s*=/g, '$1\|year='); 

 //Hyphenate deprecated multiword parameters and redundant ref=harv (six params should not be fixed, per RFC reclose April 2021)
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*accessdate\s*=/gi, '$1\|access\-date=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*airdate\s*=/gi, '$1\|air\-date=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*authorlink\s*=/gi, '$1\|author\-link=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*authorlink(\d+)\s*=/gi, '$1\|author\-link$2=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*authorlink(\d+)\s*=/gi, '$1\|author\-link$2=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*authorlink(\d+)\s*=/gi, '$1\|author\-link$2=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*author(\d+)link\s*=/gi, '$1\|author\-link$2=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*author(\d+)link\s*=/gi, '$1\|author\-link$2=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*author(\d+)link\s*=/gi, '$1\|author\-link$2=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archiveurl\s*=/gi, '$1\|archive\-url=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archivedate\s*=/gi, '$1\|archive\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*booktitle\s*=/gi, '$1\|book\-title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*chapterurl\s*=/gi, '$1\|chapter\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*conferenceurl\s*=/gi, '$1\|conference\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*displayauthors\s*=/gi, '$1\|display\-authors=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*episodelink\s*=/gi, '$1\|episode\-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*layurl\s*=/gi, '$1\|lay\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*mailinglist\s*=/gi, '$1\|mailing\-list=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*mapurl\s*=/gi, '$1\|map\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*nopp\s*=/gi, '$1\|no\-pp=');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*origyear\s*=/gi, '$1\|orig\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*publicationdate\s*=/gi, '$1\|publication\-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*serieslink\s*=/gi, '$1\|series\-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*transcripturl\s*=/gi, '$1\|transcript\-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ref\s*=\s*harv\s*([\|\}])/g, '$1$2');
  str = str.replace(/({{\s*Bryan \(3rd edition\)(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ref\s*=\s*harv\s*([\|\}])/g, '$1$2');
  str = str.replace(/({{\s*DBI(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ref\s*=\s*harv\s*([\|\}])/g, '$1$2');
  str = str.replace(/({{\s*O*DNB(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ref\s*=\s*harv\s*([\|\}])/g, '$1$2');
  str = str.replace(/({{\s*ODLA(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ref\s*=\s*harv\s*([\|\}])/g, '$1$2');
  str = str.replace(/({{\s*EI2(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ref\s*=\s*harv\s*([\|\}])/g, '$1$2');
  str = str.replace(/({{\s*EI3(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ref\s*=\s*harv\s*([\|\}])/g, '$1$2');
  // Temp ref=harv bulk replacement; watch for false positives
  str = str.replace(/({{\s*[a-z](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ref\s*=\s*harv\s*([\|\}])/gi, '$1$2');

 //unknown language
  str = str.replace(/(\{\{[Cc]it)iranj(e web)a(\s*\|)/g, '$1$2$3');



 //Spanish and Italian and Portuguese and Catalan
  str = str.replace(/(\{\{[Cc]it)ar*( web\s*\|)/g, '$1e$2');
  str = str.replace(/(\{\{[Cc]it)a( jornal\s*\|)/g, '$1e journal\|');
  str = str.replace(/(\{\{[Cc]it)ar*( li[bv]ro\s*\|)/g, '$1e book\|');
  str = str.replace(/(\{\{[Cc]it)a( noticia\s*\|)/g, '$1e news\|');
  str = str.replace(/(\{\{[Cc]it)a( news\s*\|)/g, '$1e news\|');
  str = str.replace(/(\{\{[Cc]it)a( publicaci[óo]n\s*\|)/g, '$1e journal\|');
  str = str.replace(/(\{\{[Cc]it)a( pubblicazione\s*\|)/g, '$1e journal\|');
  str = str.replace(/(\{\{)[Rr]ef-llibre(\s*\|)/g, '$1cite book$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*abruf\s*=/g, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*acessadoem\s*=/g, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ac+essodata\s*=/g, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*agencia\s*=/g, '$1\|agency=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*altri\s*=/g, '$1\|others=');  
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*annooriginale\s*=/g, '$1\|orig-year=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*a[ñn]+o\s*=/g, '$1\|year=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*any\s*=/g, '$1\|year=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*añoacceso\s*=/g, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*apellido-editor\s*=/g, '$1\|editor-last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*apellidos*(\d)\s*=/g, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*apellidos*\s*=/g, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*archive url\s*=/g, '$1\|archive-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*arquivodata\s*=/g, '$1\|archive-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*arquivourl\s*=/g, '$1\|archive-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*autor(\d)\s*=/g, '$1\|author$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*autorlink(\d)*\s*=/g, '$1\|author-link$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*autore*\s*=/g, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*autore(\d)\s*=/g, '$1\|author$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*cap[ií]t[ou]lo*\s*=/g, '$1\|chapter=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*cita\s*=/g, '$1\|quote=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*cita[cç][aã]o\s*=/g, '$1\|quote=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*citazione\s*=/g, '$1\|quote=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*citt[àá]\s*=/g, '$1\|location='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*coautor[eis]+\s*=/g, '$1\|coauthors=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*cognom\s*=/g, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*cognome*(\d)*\s*=/g, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*col·lecció\s*=/g, '$1\|series=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*consulta\s*=/g, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*curatore\s*=/g, '$1\|editor=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*data\s*=/g, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dataarchivio\s*=/g, '$1\|archive-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*[dati\-]*acces+o\s*=/g, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*edició\s*=/g, '$1\|edition=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*edición\s*=/g, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*edição\s*=/g, '$1\|edition=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*editor[aie]\s*=/g, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*editorial\s*=/g, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*edizione*\s*=/g, '$1\|edition=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*enlaceautor*(\d)\s*=/g, '$1\|author-link$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*enlaceautor\s*=/g, '$1\|author-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*enllaçautor\s*=/g, '$1\|author-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*fecha-publicación\s*=/g, '$1\|publication-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*fecha\s*=/g, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*fecha+c+es+o\s*=/g, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*fechaarchivo\s*=/g, '$1\|archive-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*formato\s*=/g, '$1\|format=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*giornale\s*=/g, '$1\|journal=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*idioma\s*=/g, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*jornal\s*=/g, '$1\|journal=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*l[ií]ngua\d*\s*=/g, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*llengua\s*=/g, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lloc\d*\s*=/g, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*local\d*\s*=/g, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lugar-publicación\d*\s*=/g, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*m[êe]se*\s*=/gi, '$1\|month=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*n[uú]mero*\s*=/g, '$1\|issue=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*nom[br]*e(\d)\s*=/g, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*nom[br]*e\s*=/g, '$1\|first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*nombre-editor\s*=/g, '$1\|editor-first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*o[bep]+ra\s*=/g, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*otros\s*=/g, '$1\|others=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p[áa]gina\s*=/g, '$1\|page=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p[áa]ginas\s*=/g, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*p[áaà]gines*\s*=/g, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*peri[óo]dico\s*=/g, '$1\|journal=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*primei*ro(\d)*\s*=/g, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*pub+lica[cz]i[óo]ne*\s*=/g, '$1\|journal=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*publicação\s*=/g, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*publicació\s*=/g, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*publicado\s*=/g, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*registo\s*=/g, '$1\|registration=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*rivista\s*=/g, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*seri[ae]*\s*=/g, '$1\|series=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*sitioweb\s*=/g, '$1\|website=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*sito\s*=/g, '$1\|website=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*suscripción\s*=/g, '$1\|subscription=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*tipo*\s*=/g, '$1\|type=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*tit[uo]lo\s*=/g, '$1\| title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*títol\s*=/g, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*título\s*=/g, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*trabalho\s*=/g, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*traduttore\s*=/g, '$1\|translator=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ubicación\s*=/g, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*[úu]ltimo(\d)*\s*=/g, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*urlarchivi*o\s*=/g, '$1\|archive-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*urlmorto\s*=/g, '$1\|dead-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*volumen\s*=/g, '$1\|volume=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*wkautore\s*=/g, '$1\|author-link=');
 
 //French
  str = str.replace(/(\{\{)\s*Lien\s*brisé(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/(\{\{)\s*Lien\s*web(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/(\{\{)\s*Article(\s*\|)/gi, '$1cite journal$2');
  str = str.replace(/(\{\{)\s*Ouvrage(\s*\|)/gi, '$1citation$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*auteur(\d*)\s*=/g, '$1\|author$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*série\s*=/g, '$1\|series=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*année\s*=/g, '$1\|year=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*coauteurs*\s*=/g, '$1\|coauthors=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*consulté le\s*=/g, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*éditeur\s*=/g, '$1\|editor=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*en ligne le\s*=/g, '$1\|archive-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lien auteur(\d*)\s*=/g, '$1\|author-link$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lien éditeur(\d*)\s*=/g, '$1\|editor-link$2=');  
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lieu\s*=/g, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*lire en ligne\s*=/g, '$1\|url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*mois\s*=/g, '$1\|month=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*nom\s*=/g, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*nom(\d)\s*=/g, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*numéro\s*=/g, '$1\|number=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*pages totales\s*=\s*\d+\s*/g, '$1');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*passage\s*=/g, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*périodique\s*=/g, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*prénom\s*=/g, '$1\|first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*prénom(\d)\s*=/g, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*site\s*=/g, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*langue\s*=/g, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*titre\s*=/g, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*titre chapitre\s*=/g, '$1\|chapter=');
 
//Swedish, I think
  str = str.replace(/(\{\{)\s*bokref(\s*\|)/gi, '$1citation$2');
  str = str.replace(/(\{\{)\s*webbref(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/(\{\{)\s*tidningsref(\s*\|)/gi, '$1cite news$2');
  str = str.replace(/(\{\{)\s*tidskriftsref(\s*\|)/gi, '$1cite journal$2'); 
  str = str.replace(/(\{\{)\s*pressmeddelanderef(\s*\|)/gi, '$1cite press release$2'); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*år\s*=/gi, '$1\|year=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*arkivurl\s*=/gi, '$1\|archive-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*arkivdatum\s*=/gi, '$1\|archive-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*åtkomstdatum\s*=/gi, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*datum\s*=/gi, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*citat\s*=/gi, '$1\|quote=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*efternamn(\d*)\s*=/gi, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*författare\s*=/gi, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*förnamn(\d*)\s*=/gi, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*hämtdatum\s*=/gi, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*libris\s*=(\d+)/gi, '$1\|id=\[\[LIBRIS\]\] $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*redaktör\s*=/gi, '$1\|editor=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*rubrik\s*=/gi, '$1\|title='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*sid\s*=/gi, '$1\|page=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*sidor\s*=/gi, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*språk\s*=/gi, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*tidskrift\s*=/gi, '$1\|journal=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*tidning\s*=/gi, '$1\|newspaper=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*titel\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*utgåva\s*=/gi, '$1\|edition=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*utgivare\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*utgivningsort\s*=/gi, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*verk\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*volym\s*=/gi, '$1\|volume=');
  
//Norwegian
  str = str.replace(/(\{\{)\s*kilde www(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/(\{\{)\s*kilde artikkel(\s*\|)/gi, '$1cite news$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*besøksdato\s*=/gi, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*bind\s*=/gi, '$1\|volume=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*etternavn\s*=/gi, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*fornavn\s*=/gi, '$1\|first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*hefte\s*=/gi, '$1\|issue=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*publikasjon\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*sider\s*=/gi, '$1\|pages=');


//Dutch, I think
  str = str.replace(/(\{\{)\s*citeer web(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*uitgever\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*bezochtdatum\s*=/gi, '$1\|access-date=');
  

//Finnish, I think
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Osoite\s*=/gi, '$1\|url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Tekijä\s*=/gi, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Ajankohta\s*=/gi, '$1\|date=');
  
//Russian
  str = str.replace(/(\{\{)\s*статья(\s*\|)/gi, '$1cite journal$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*автор\s*=/gi, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*страницы\s*=/gi, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*страниц\s*=/gi, '$1\|pages='); //may not be a valid parameter
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*заглавие\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ответственный\s*=/gi, '$1\|editor=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*место\s*=/gi, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*издание\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*издательство\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*год\s*=/gi, '$1\|year=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*том\s*=/gi, '$1\|volume=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*номер\s*=/gi, '$1\|number=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*тип\s*=/gi, '$1\|type=');
  
//German
  str = str.replace(/(\{\{)\s*Literatur(\s*\|)/gi, '$1citation$2');
  str = str.replace(/(\{\{)\s*Internetquelle(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Autor\s*=/gi, '$1\|author='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Titel\s*=/gi, '$1\|title='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Verlag\s*=/gi, '$1\|publisher='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*hrsg\s*=/gi, '$1\|publisher='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Ort\s*=/gi, '$1\|location='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Jahr\s*=/gi, '$1\|year='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Band\s*=/gi, '$1\|volume='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Nummer\s*=/gi, '$1\|number='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Monat\s*=/gi, '$1\|month='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Seiten\s*=/gi, '$1\|pages='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Sprache\s*=/gi, '$1\|language='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Online\s*=/gi, '$1\|url='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Herausgeber\s*=/gi, '$1\|editor='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Übersetzer\s*=/gi, '$1\|others=Translated by '); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Sammelwerk\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Zugriff\s*=/gi, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Kapitel\s*=/gi, '$1\|chapter=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*Werk\s*=/gi, '$1\|work=');

  //Turkish
  str = str.replace(/(\{\{)\s*Haber kaynağı(\s*\|)/gi, '$1cite news$2'); 
  str = str.replace(/(\{\{)\s*Web kaynağı(\s*\|)/gi, '$1cite web$2'); 
  str = str.replace(/(\{\{)\s*Kitap kaynağı(\s*\|)/gi, '$1cite book$2'); 
  str = str.replace(/(\{\{)\s*Dergi kaynağı(\s*\|)/gi, '$1cite magazine$2'); 
  str = str.replace(/(\{\{)\s*Akademik dergi kaynağı(\s*\|)/gi, '$1cite journal$2'); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ad\s*=/gi, '$1\|first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ad(\d)\s*=/gi, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ay\s*=/gi, '$1\|month=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*arşiv\-*tarihi\s*=/gi, '$1\|archive-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*arşiv\-*url\s*=/gi, '$1\|archive-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*başlık\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*baskı\s*=/gi, '$1\|edition=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*cilt\s*=/gi, '$1\|volume=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dergi\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dil\s*=/gi, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*erişimtarihi\s*=/gi, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*eser\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*gazete\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ölüurl\s*=/gi, '$1\|dead-url=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dead-url\s*=hayır/gi, '$1\|dead-url=no');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*sayfa\s*=/gi, '$1\|page=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*sayfalar\s*=/gi, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*sayı\s*=/gi, '$1\|issue=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*soyadı\s*=/gi, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*soyadı(\d)\s*=/gi, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*tarih\s*=/gi, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*yardımcıyazarlar\s*=/gi, '$1\|coauthors=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*yayımcı\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*yayıncı\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*yazar\s*=/gi, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*yazar2\s*=/gi, '$1\|author2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*yazarbağı\s*=/gi, '$1\|author-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*yer\s*=/gi, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*yıl\s*=/gi, '$1\|date=');


  //Vietnamese
  str = str.replace(/(\{\{)\s*chú thích web(\s*\|)/gi, '$1cite web$2');  
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ngôn ngữ\s*=/gi, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*nhà xuất bản\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ngày truy cập\s*=/gi, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ngày\s*=/gi, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*tiêu đề\s*=/gi, '$1\|title=');
 
  //Thai
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*शीर्षक\s*=/gi, '$1\|title=');

  //Korean
  str = str.replace(/(\{\{)\s*뉴스 인용(\s*\|)/gi, '$1cite news$2');
  str = str.replace(/(\{\{)\s*웹 인용(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*성\s*=/gi, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*저자\s*=/gi, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*성명\s*=/gi, '$1\|author='); //? undocumented
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*이름\s*=/gi, '$1\|first='); //?
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*날짜\s*=/gi, '$1\|date='); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*제목\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*웹사이트\s*=/gi, '$1\|website=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*뉴스\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*출판사\s*=/gi, '$1\|publisher=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*확인일자\s*=/gi, '$1\|access-date=');//? undocumented
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*확인날짜\s*=/gi, '$1\|access-date=');//?
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*쪽\s*=/gi, '$1\|page=');
 

  //Polish
  str = str.replace(/(\{\{)\s*Cytuj pismo(\s*\|)/gi, '$1cite journal$2');  
  str = str.replace(/(\{\{)\s*Cytuj(\s*\|)/gi, '$1citation$2'); 
  str = str.replace(/(\{\{)\s*Cytuj książkę(\s*\|)/gi, '$1cite book$2'); 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*czasopismo\s*=/gi, '$1\|work=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*data dostępu\s*=/gi, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*imię\s*=/gi, '$1\|first=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*język\s*=/gi, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*miejsce\s*=/gi, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*nazwisko\s*=/gi, '$1\|last=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*odpowiedzialność\s*=/gi, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*opublikowany\s*=/gi, '$1\|website=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*strony\s*=/gi, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*tytuł\s*=/gi, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*wolumin\s*=/gi, '$1\|volume=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*wydawca\s*=/gi, '$1\|publisher=');  

 //Czech (see https://cs.wikipedia.org/wiki/%C5%A0ablona:Citace_monografie)
  str = str.replace(/(\{\{)\s*Citace\s*monografie(\s*\|)/gi, '$1cite book$2');
  str = str.replace(/(\{\{)\s*Citace elektronické monografie(\s*\|)/gi, '$1cite web$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*datum[ _]přístupu*\s*=/g, '$1\|access-date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*datum[ _]vydání*\s*=/g, '$1\|date=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*editoři*\s*=/g, '$1\|editor=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*jazyk*\s*=/g, '$1\|language=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*jméno(\d*)\s*=/g, '$1\|first$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*kapitola*\s*=/g, '$1\|chapter=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*korporace*\s*=/g, '$1\|author=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*místo*\s*=/g, '$1\|location=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*odkaz na autora\s*=/g, '$1\|author-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*odkaz na korporaci*\s*=/g, '$1\|author-link=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*počet stran*\s*=\s*\d*/g, '$1'); // # of pages
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*počet svazků*\s*=\s*\d*/g, '$1'); // # of volumes
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*příjmení(\d*)\s*=/g, '$1\|last$2=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*redaktoři*\s*=/g, '$1\|editor=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*rok*\s*=/g, '$1\|year=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*strany*\s*=/g, '$1\|pages=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*svazek*\s*=/g, '$1\|volume=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*titul*\s*=/g, '$1\|title=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*vydání*\s*=/g, '$1\|edition=');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*vydavatel*\s*=/g, '$1\|publisher=');
  //"typ vydání" means "edition type", like "enlarged". Remove it.
  
  //Replace year= (whitespace) month= or vice versa
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)0?1(\s*[\|\}])/gi, '$1January$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)0?2(\s*[\|\}])/gi, '$1February$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)0?3(\s*[\|\}])/gi, '$1March$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)0?4(\s*[\|\}])/gi, '$1April$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)0?5(\s*[\|\}])/gi, '$1May$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)0?6(\s*[\|\}])/gi, '$1June$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)0?7(\s*[\|\}])/gi, '$1July$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)0?8(\s*[\|\}])/gi, '$1August$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)0?9(\s*[\|\}])/gi, '$1September$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)10(\s*[\|\}])/gi, '$1October$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)11(\s*[\|\}])/gi, '$1November$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*month\s*=\s*)12(\s*[\|\}])/gi, '$1December$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*year\s*=\s*\[*(\d\d\d\d)\]*\s*\|\s*month\s*=\s*([a-z\/\-\–\— äû]+)\.*,*\s*([\}\|])/gi, '$1\| date=$3 $2 $4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*month\s*=\s*([a-z\/\-\–\— äû]+)\.*,*\s*\|\s*year\s*=\s*\[*(\d\d\d\d)\]*\s*([\}\|])/gi, '$1\| date=$2 $3 $4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*year\s*=\s*\[*(\d\d\d\d)\]*\s*\|\s*(author\s*=\s*[a-z\s\-\.]+\s*\|)\s*month\s*=\s*([a-z\/\-\–\— ä]+)\.*,*\s*\|/gi, '$1\| date=$4 $2 \| $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*year\s*=\s*\[*(\d\d\d\d)\]*\s*\|\s*([volume|issue|number|first[0-9]+|last[0-9]+]\s*=\s*[a-z0-9\s\-\–\—\.]+\s*\|)\s*month\s*=\s*([a-z\/\-\–\— ä]+)\.*,*\s*\|/gi, '$1\| date=$4 $2 \| $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*year\s*=\s*\[*(\d\d\d\d)\]*\s*\|\s*(volume\s*=\s*[0-9\s\-\–\—\.]+\s*\|)\s*month\s*=\s*([a-z\/\-\–\— ä]+)\.*,*\s*\|/gi, '$1\| date=$4 $2 \| $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*year\s*=\s*\[*(\d\d\d\d)\]*\s*\|\s*(issue\s*=\s*[0-9\s\-\–\—\.]+\s*\|)\s*month\s*=\s*([a-z\/\-\–\— ä]+)\.*,*\s*\|/gi, '$1\| date=$4 $2 \| $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*year\s*=\s*\[*(\d\d\d\d)\]*\s*\|\s*(last[0-9]*\s*=\s*[a-z\s\-\–\—\.]+\s*\|)\s*month\s*=\s*([a-z\/\-\–\— ä]+)\.*,*\s*\|/gi, '$1\| date=$4 $2 \| $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*year\s*=\s*\[*(\d\d\d\d)\]*\s*\|\s*(first[0-9*]\s*=\s*[a-z\s\-\–\—\.]+\s*\|)\s*month\s*=\s*([a-z\/\-\–\— ä]+)\.*,*\s*\|/gi, '$1\| date=$4 $2 \| $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*year\s*=\s*\[*(\d\d\d\d)\]*\s*\|([volume|issue|number|first[0-9]+|last[0-9]+]\s*=\s*[a-z0-9\s\-\–\—\.]+\s*\|\s*[volume|issue|number|first[0-9]+|last[0-9]+]\s*=\s*[a-z0-9\s\-\–\—\.]+\s*\|)\s*month\s*=\s*([a-z\/\-\–\— ä]+)\.*,*\s*\|/gi, '$1\| date=$4 $2 \| $3');

  //Replace month=Month YYYY
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*month\s*=\s*([a-z\/\-\–\—\.\sä]+)\s*\[*(\d\d\d\d)\]*\s*([\}\|])/gi, '$1\| date=$2 $3 $4');

  //Replace blank unsupported parameters
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*chapterurl\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*coauthors*\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*day\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dead\-*url\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*description\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*jour\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*laysource\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*laydate\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*layurl\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*month\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*name-list-format\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*nopp\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*registration\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*subscription\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*transcripturl\s*=\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*([\}\|])/gi, '$1 $2'); //empty parameter

  //Replace authorformat=scap
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*[authedi]+or-*format\s*=\s*scap\s*([\}\|])/gi, '$1 $2');

  //Replace invalid parameter values
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dead-*url\s*=\s*404\s*([\}\|])/gi, '$1\|dead-url=yes $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dead-*url\s*=\s*[no]\s*([\}\|])/gi, '$1\|dead-url=no $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dead-*url\s*=\s*no[a-z]+\s*([\}\|])/gi, '$1\|dead-url=no $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*dead-*url\s*=\s*yes[a-z]+\s*([\}\|])/gi, '$1\|dead-url=yes $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*last-*author-*amp\s*=\s*no*\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*last-*author-*amp\s*=\s*\"*[\da-mo-xz:;&]+\"*\s*([\}\|])/gi, '$1\|last-author-amp=y$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*no-*pp\s*=\s*[1-9]\d+\s*[pages]*\.*\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*no-*pp\s*=\s*false\s*\.*\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*no-*pp\s*=\s*0[\s<\>\-!p\'hidesautomcr\.]+([\}\|])/gi, '$1\|nopp=y $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*registration\s*=\s*no\s*([\}\|])/gi, '$1 $2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*subscription\s*=\s*no\s*([\}\|])/gi, '$1 $2');

  //Replace pmc or pmid=PMC#### with pmc=####
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*pm[cid]+\s*=\s*PMC(\d+)\s*([\}\|])/gi, '$1\| pmc=$2 $3');
  //Replace trailing punctuation or letters
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*pm[cid]+\s*=\s*\d+)[a-z\.\,\;\)\*\/]+\s*([\}\|])/gi, '$1$2$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*pm[cid]+\s*=\s*)[a-z\.\,\;\)\*\/]+\s*([\}\|])/gi, '$1$2$3');

  //Replace ol=OL#### with ol=####
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ol\s*=\s*OL([\da-z]+)\s*([\}\|])/gi, '$1\| ol=$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*ol\s*=\s*open\s*library\s*O*L*([\da-z]+)\s*([\}\|])/gi, '$1\| ol=$2 $3');

  //Fix OCLC that is really ISBN, or multiple OCLC values
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*isbn\s*=\s*)[\d-X]+\s*\|\s*oclc\s*=\s*(978[\d-]+\s*[\}\|])/gi, '$1$2$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*oclc\s*=\s*[\d]+)[ ,]+[ ,\d]+\s*([\}\|])/gi, '$1$2$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*oclc\s*=\s*[\d]+\s*)[,\.\)]\s*([\}\|])/gi, '$1$2$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*oclc\s*=\s*)2830+([\d]+)\s*([\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*oclc\s*=\s*(63) *[-–] *(17621)\s*([\}\|])/gi, '$1\|lccn=$2-$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*oclc\s*=\s*(\d\d\d\d)-(\d\d\d\d)\s*([\}\|])/gi, '$1\|issn=$2-$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*oclc\s*=\s*(\d\d)[-–](\d\d\d\d\d)\s*([\}\|])/gi, '$1\|lccn=$2-$3$4');


  //Replace a multi-part invisible character with apostrophe
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))‑(.*[\}\|])/gi, '$1\'$2');
  //Replace a multi-part invisible character with en dash in pages=
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))–(.*[\}\|])/gi, '$1–$2');
  //Replace invisible characters with nothing (e.g. soft hyphen)
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))[­€™˜€€­­‍]+([\da-z\:\'\"].*[\}\|])/gi, '$1$2');
  //Replace invisible characters with space
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))[—\t™ €	]+(.*[\}\|])/gi, '$1 $2');
  //Replace invisible character with apostrophe
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))[’‘‘‘]+(.*[\}\|])/gi, '$1\'$2');
  //Replace invisible character with apostrophe again
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))[’‘‘‘]+(.*[\}\|])/gi, '$1\'$2');
  //Replace invisible character with ellipsis
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))[…]+(.*[\}\|])/gi, '$1\.\.\.$2');
  //Replace invisible character with en dash
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))[–]+(.*[\}\|])/gi, '$1–$2');
  //Replace invisible character with quote mark
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))[““”]+(.*[\}\|])/gi, '$1\"$2');

  //Replace line feed or tab character in parameter value
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*author[s\d]*\s*=[^\|\}]+)[\n\t]+([\-\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*format\s*=[^\|\}]+)[\n\t]+([\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*journal\s*=[^\|\}]+)[\n\t]+([\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*publisher\s*=[^\|\}]+)[\n\t]+([\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*quote\s*=[^\|\}]+)[\n\t]+([\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*title\s*=[^\|\}]+)[\n\t]+([\d\-\"\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*script-title\s*=[^\|\}]+)[\n\t]+([\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*series\s*=[^\|\}]+)[\n\t]+([\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*type\s*=[^\|\}]+)[\n\t]+([\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*work\s*=[^\|\}]+)[\n\t]+([\(\s]*\w.+?(?=[\|\}]))/gi, '$1$2 $3');
  str = str.replace(/({{\s*NHLE(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*desc\s*=[^\|\}]+)[\n\t]+(\s*\w.+?(?=[\|\}]))/gi, '$1$2 $3');

  //Replace external links where they don't belong
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*publisher\s*=\s*)https*:\/\/plus\.google\.com\/[\+\da-z\/]+\s*([\|\}])/gi, '$1$2$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*publisher\s*=\s*)https*:\/\/([a-z\-\d\.]+)\/*(\s*[\}\|])/gi, '$1$2$3$4');
  //str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*title\s*=\s*)https*:\/\/(.*[\}\|])/gi, '$1$2$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*website\s*=\s*)https*:\/\/([a-z\-\d\.]+)\/*(\s*[\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*work\s*=\s*)https*:\/\/([a-z\-\d\.]+)\/*(\s*[\}\|])/gi, '$1$2$3$4');

  //Replace non-printing characters
  str = str.replace(/​/gi, '');
  
  //Fix DOI with full URL 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi\s*=\s*)https*\:\/\/d*x*\.*doi\.org\/(10)/gi, '$1$2$3');
  //Fix DOI with unnecessary prefix or suffix
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi\s*=\s*)doi\:*\s*(10)/gi, '$1$2$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi\s*=\s*)\:\s*(10)/gi, '$1$2$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi\s*=\s*)\s*(10\.[\da-z\-\/\.\(\)]+[\da-z]+)[\.\,](\s*[\}\|])/gi, '$1$2$3$4');
  //Delete non-DOI 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi\s*=\s*)\s*10\.1\.1\.[\d\.]+(\s*[\}\|])/gi, '$1$2$3');
  //Replace backslash with slash
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi\s*=\s*)(10\.\d\d\d\d)\\/gi, '$1$2$3\/');
  //Insert missing 1 at start
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi\s*=\s*)(0\.\d\d\d\d)/gi, '$1$2 1$3');
  //Change %2F to slash
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*doi\s*=\s*)(10\.\d\d\d\d)%2F/gi, '$1$2 $3\/');

  //Correct LCCN 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)9720912(\s*[\}\|])/gi, '$1$297020912$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)6220878(\s*[\}\|])/gi, '$1$262020878$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)5914456(\s*[\}\|])/gi, '$1$259014456$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)5510911(\s*[\}\|])/gi, '$1$255010911$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)6725285(\s*[\}\|])/gi, '$1$267025285$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)5211515(\s*[\}\|])/gi, '$1$252011515$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)8095179(\s*[\}\|])/gi, '$1$280905179$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)7806371(\s*[\}\|])/gi, '$1$278106371$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)TX-5-007-748(\s*[\}\|])/gi, '$1$200503566$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)6613085(\s*[\}\|])/gi, '$1$266013085$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)7280175(\s*[\}\|])/gi, '$1$272080175$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)6318494(\s*[\}\|])/gi, '$1$263018494$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)8414873(\s*[\}\|])/gi, '$1$284014873$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)7912204(\s*[\}\|])/gi, '$1$279012204$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*lccn\s*=\s*)783834(\s*[\}\|])/gi,  '$1$278003834$3');
 
      
  //Correct arXiv 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*arxiv\s*=\s*)[a-z\-\.]+\/(\d\d\d\d\.\d\d\d\dv*\d*)(\s*[\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*arxiv\s*=\s*)([a-z\d\.\/\-]+)\.[a-z]+(\s*[\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*arxiv\s*=\s*)arxiv:\s*([a-z\d\.\/\-]+)(\s*[\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*arxiv\s*=\s*)(\d\d\d\d\.\d\d\d\dv*\d*)[a-z\.\/](\s*[\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*arxiv\s*=\s*)abs\/([a-z\d\.\/\-]+)(\s*[\}\|])/gi, '$1$2$3$4');
  //above, with eprint= instead of arxiv=
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*eprint\s*=\s*)[a-z\-\.]+\/(\d\d\d\d\.\d\d\d\dv*\d*)(\s*[\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*eprint\s*=\s*)([a-z\d\.\/\-]+)\.[a-z]+(\s*[\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*eprint\s*=\s*)arxiv:\s*([a-z\d\.\/\-]+)(\s*[\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*eprint\s*=\s*)(\d\d\d\d\.\d\d\d\dv*\d*)[a-z\.\/](\s*[\}\|])/gi, '$1$2$3$4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(\|\s*eprint\s*=\s*)abs\/([a-z\d\.\/\-]+)(\s*[\}\|])/gi, '$1$2$3$4');
  //Cite arxiv remove unsupported parameters
  str = str.replace(/({{\s*[cC]ite arxiv(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*access-*date\s*=\s*[\da-z\.\,\- ]+(\s*[\}\|])/gi, '$1$2');
  str = str.replace(/({{\s*[cC]ite arxiv(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*bibcode\s*=\s*[\da-z\.\,\- ]+(\s*[\}\|])/gi, '$1$2');
  str = str.replace(/({{\s*[cC]ite arxiv(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*pages*\s*=\s*[\da-z\.\,\-– ]+(\s*[\}\|])/gi, '$1$2');
  str = str.replace(/({{\s*[cC]ite arxiv(?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*publisher\s*=\s*[\da-z\.\,\- ]+(\s*[\}\|])/gi, '$1$2');

  //Replace Cite DOI template with Cite journal
  str = str.replace(/{{\s*[cC]ite doi\|10\.2307\/(.+?(?=[\}]))/gi, '{{Cite journal|jstor=$1');
  str = str.replace(/{{\s*[cC]ite doi\|(10\.\d+\/.+?(?=[\}]))/gi, '{{Cite journal|doi=$1');
  str = str.replace(/{{\s*[cC]ite pmid\|(\d+?(?=[\}]))/gi, '{{Cite journal|pmid=$1');
  
  //Delete second instance of identical page=X|pages=X 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*page\s*=\s*([\d]+)\s*\|\s*pages\s*=\s*\1(\s*[\}\|])/gi, '$1\|page=$2$3');
  //Delete first instance of identical page=X-Y|pages=X-Y 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*page\s*=\s*([\d\-]+)\s*\|\s*pages\s*=\s*\1(\s*[\}\|])/gi, '$1\|pages=$2$3');
  //Replace page=X|pages=Y with pages=X–Y
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*page\s*=\s*([\d]+)\s*(\|\s*pages\s*=\s*)([\d]+\s*[\}\|])/gi, '$1$3$2–$4');
  //Replace page=Y|pages=X–Z with pages=X–Z
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))\|\s*page\s*=\s*([\d]+)\s*(\|\s*pages\s*=\s*)([\d]+[-–][\d]+\s*[\}\|])/gi, '$1$3$2');

  //Replace bad Time magazine ISSN
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*0040-*718X/g, '$1issn=0040-781X');
  //Comment out invalid Billboard Brasil ISSN (probably a UPC)
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*977-\s*217605400-2\s*\|*)/gi, '$1<!--$2-->');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*977-2155985400-2)/gi, '$1<!--$2-->');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*977-879605400-2)/gi, '$1<!--$2-->');
  //Replace ISSN lower-case x with uppercase X
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*[=\|]\s*\d\d\d\d)[-–—= ]*(\d\d\d)x/g, '$1$2-$3X');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(ISSN\s*[=\|]\s*\d\d\d\d)[-–—= ]*(\d\d\d)x/g, '$1$2-$3X');
  //Fix crazy separators
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*\d\d\d\d)[‐–—=\. ](\d\d\d[\dX])/gi, '$1$2-$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*\d\d\d\d)\&ndash\;(\d\d\d[\dX])/gi, '$1$2-$3');
  //Fix crazy values
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*none\s*([\|\}])/gi, '$1issn=$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*null\s*([\|\}])/gi, '$1issn=$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*n\/a\s*([\|\}])/gi, '$1issn=$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*needed\s*([\|\}])/gi, '$1issn=$2');
  //Fix punctuation or word following
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*\d\d\d\d)-*(\d\d\d[\dX])[\.\,\)]\s*([\|\}])/gi, '$1$2-$3 $4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*(\d\d\d\d)-*(\d\d\d[\dX])\s*\([a-z]+\)\s*([\|\}])/gi, '$1issn=$2-$3 $4');
  //Fix letters before or after
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*[a-z,]+\s*(\d\d\d\d)-*(\d\d\d[\dX])\s*[\.\,\)\=]*\s*([\|\}])/gi, '$1issn=$2-$3 $4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*\#\s*(\d\d\d\d)-*(\d\d\d[\dX])/gi, '$1issn=$2-$3');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*(\d\d\d\d)-*(\d\d\d[\dX])\s*[a-z]+\s*([\|\}])/gi, '$1issn=$2-$3 $4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*\d\d\d\d-*\d\d\d[\dX])[\;\,\s]*\([-a-z]+\)\s*([\|\}])/gi, '$1$2');
  //Fix extra "issn" after = 
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*issn[\s-:=]+(\d\d\d\d)-*(\d\d\d[\dX])\s*\([a-z]+\)\s*([\|\}])/gi, '$1issn=$2-$3 $4');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*issn[\s-:=]+(\d\d\d\d)-*(\d\d\d[\dX])/gi, '$1issn=$2-$3');
  //Fix double issn
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*\d\d\d\d-\d\d\d[\dX])[\;\,]\s+\d\d\d\d-\d\d\d[\dX]/gi, '$1$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*\d\d\d\d-\d\d\d[\dX])\s+\d\d\d\d-\d\d\d[\dX]/gi, '$1$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*\d\d\d\d-\d\d\d[\dX])\/\d\d\d\d-\d\d\d[\dX]/gi, '$1$2');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))(issn\s*=\s*\d\d\d\d-*\d\d\d[\dX])[\;\,\s]*\([-a-z]+\)\/*[\;\,\s]*\d\d\d\d-*\d\d\d[\dX]\s*\([-a-z]+\)\/*/gi, '$1$2');
  //Billboard USA ISSN
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*0005-*2510/gi, '$1issn=0006-2510');
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*006-*2510/gi, '$1issn=0006-2510');
  //Super Play ISSN
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*0966-*6199/gi, '$1issn=0966-6192');
  //ISSN is actually an ISBN
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*(97[89][\d-]+\s*[\|\}])/gi, '$1isbn=$2');
  //Royal Asiatic Society Hong Kong Branch
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*1990-*7295/gi, '$1issn=1991-7295');
  //Replace Zilmer invalid ISSN with valid ISBN
  str = str.replace(/({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*))issn\s*=\s*1406-*2865/gi, '$1isbn=9789949110896');

  return str;
}
 
function autoEdFunctions4() { //Activates individual modules when "auto ed" tab is clicked
    var txt = document.editform.wpTextbox1;
    txt.value = ReplaceUnnamed(txt.value);
//    txt.value = autoEdWhitespace(txt.value);
}

Leave a Reply