User:Jonesey95/AutoEd/twoisbnparams.js

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

//Sets variable configuration
autoEdTag = "Fix [[:Category:Pages with ISBN errors|ISBN error]] or other ISBN error using [[WP:AutoEd|AutoEd]] (or wrap invalid ISBN in template to show error message)"; //Tweaks edit summary
autoEdLinkName = "AutoEd fix ISBN"; //Changes the link name at the top of the page
autoEdLinkHover = "Fix ISBN errors"; //When user hovers over link

//Set up function
function ReplacetwoISBNparams(str) { //function to remove erroneous ISBN parameter values

  //Special:BookSources (needs to be before "stray punctuation" checks)
  str = str.replace(/ISBN \[\[Special:BookSources\/[0-9\-X]+\|([0-9\-X]+)\]\]/gi, '{{ISBN|$1}}');
  str = str.replace(/\[+International Standard Book Number\|ISBN\]+ *\[+Special.{1,3}BookSources\/[\d\-X]+ *\|([\d\-X]+)\]+/gi, '{{ISBN|$1}}');
  str = str.replace(/\[+International Standard Book Number\|ISBN\]+ *\[+Special.{1,3}BookSources\/[\d\-X]+ *\|\<bdi\>([\d\-X]+)\<\/bdi\>\]+/gi, '{{ISBN|$1}}');
  str = str.replace(/\[+International Standard Book Number\|ISBN\]+\&nbsp\;\[+Special.{1,3}BookSources\/[\d\-X]+ *\|\<bdi\>([\d\-X]+)\<\/bdi\>\]+/gi, '{{ISBN|$1}}');
  str = str.replace(/\[+International Standard Book Number\|ISBN\]+ *([\d\-X]+)/g, '{{ISBN|$1}}');
  str = str.replace(/\[+International Standard Book Number\|ISBN\]+ *\[+Special:BookSources\/[\d\-X]+ *\|([\d\-X]+)\]+/g, '{{ISBN|$1}}');
  str = str.replace(/\[+International Standard Book Number\|ISBN\]+\&nbsp\;\[+Special[:%3A]+BookSources\/[\d\-X]+ *\|([\d\-X]+)\]+/g, '{{ISBN|$1}}');
  str = str.replace(/\[+ISBN\]+ \[+Special[:\%3A]+BookSources\/[\d\-X]+ *\|([\d\-X]+)\]+/g, '{{ISBN|$1}}');
  str = str.replace(/\[+ISBN\]+ \[+Especial:FuentesDeLibros\/[\d\-X]+ *\|([\d\-X]+)\]+/g, '{{ISBN|$1}}');
  str = str.replace(/\[+:*[a-z]*:*Special: *Book[sS]ources\/[\d-X]+ *\|(ISBN\s+[\d-X]+)\]+/g, '$1');
  str = str.replace(/\[+:*[a-z]*:*Especial:FuentesDeLibros\/[\d-X]+ *\|(ISBN\s+[\d-X]+)\]+/g, '$1');
  str = str.replace(/\[+:*[a-z]*:*Spezial:ISBN-Suche\/[\d-X]+ *\|(ISBN\s+[\d-X]+)\]+/g, '$1');
  str = str.replace(/\[+International Standard Book Number\|ISBN\]+ *\[+:*[a-z]*:*Speciale:RicercaISBN\/\/[\d\-X]+ *\|([\d\-X]+)\]+/gi, '{{ISBN|$1}}');

  str = str.replace(/\[+ISBN \(identifier\)\|ISBN\]+ *\[+Special.{1,3}BookSources\/[\d\-X]+ *\|([\d\-X]+)\]+/gi, '{{ISBN|$1}}');
  str = str.replace(/\[+ISBN \(identifier\)\|ISBN\]+ *\[+Special.{1,3}BookSources\/[\d\-X]+ *\|\<bdi\>([\d\-X]+)\<\/bdi\>\]+/gi, '{{ISBN|$1}}');
  str = str.replace(/\[+ISBN \(identifier\)\|ISBN\]+\&nbsp\;\[+Special.{1,3}BookSources\/[\d\-X]+ *\|\<bdi\>([\d\-X]+)\<\/bdi\>\]+/gi, '{{ISBN|$1}}');
  str = str.replace(/\[+ISBN \(identifier\)\|ISBN\]+ *([\d\-X]+)/g, '{{ISBN|$1}}');
  str = str.replace(/\[+ISBN \(identifier\)\|ISBN\]+ *\[+Special:BookSources\/[\d\-X]+ *\|([\d\-X]+)\]+/g, '{{ISBN|$1}}');
  str = str.replace(/\[+ISBN \(identifier\)\|ISBN\]+\&nbsp\;\[+Special[:%3A]+BookSources\/[\d\-X]+ *\|([\d\-X]+)\]+/g, '{{ISBN|$1}}');


  //Fix ISBN with three or more braces
  str = str.replace(/\{\{\{+ISBN\|([\d\-X]+)\}\}\}+/g, '\{\{\ISBN|$1}\}');

  //nowiki Visual Editor bug
  str = str.replace(/\<nowiki\>ISBN +([\d-X ]+)\<\/nowiki\>/gi, '{{ISBN|$1}}');
  str = str.replace(/\<nowiki\>(\{\{ISBN\|[\d-X ]+\}\})\<\/nowiki\>/gi, '$1');

  //nowiki in title= parameter of citation, for a book review
  str = str.replace(/ISBN *\<nowiki *\/\> *([\d\-X ]+[\dX])/gi, '\{\{Text\|ISBN\}\} $1');
  str = str.replace(/ISBN *\<nowiki *\/\>:* *([\d\-X ]+[\dX])/gi, '\{\{Text\|ISBN\}\}: $1');
 
  //Fix ISBN in URL link
  str = str.replace(/\[https*:\/\/[a-z]+\.google\.com\/search[a-z\:\/\.\d\-\?\&\=\+\_\%\#\,]+\s+(.+?(?=[\]]))\]/gi, '$1');
  str = str.replace(/\[https*:\/\/[a-z]+\.amazon[a-z\:\/\.\d\-\?\&\=\+\_\%\#\,]+\s+(.+?(?=[\]]))\]/gi, '$1');
  str = str.replace(/\[http[a-z\:\/\.\d\-\?\&\=\+\_\%\#\,]+\s+ISBN\s+[\d\-X]+, ([\d\-X]+)\]([\)\. ]*)/gi, '{{ISBN|$1}}$2');
  str = str.replace(/\[http[a-z\:\/\.\d\-\?\&\=\+\_\%\#\,]+\s+ISBN\s+([\d\-X]+)([\)\. ]*)\]([\)\. ]*)/gi, '{{ISBN|$1}}$2$3');
  str = str.replace(/ISBN\s+\[http[a-z\:\/\.\d\-\?\&\=\+\_\%\,\#]+\s+([\d\-X]+)([\)\. ]*)\]([\)\. ]*)/gi, '{{ISBN|$1}}$2$3');
  //str = str.replace(/\[http[a-z\:\/\.\d]+ ISBN (B[\da-z]+)\]/gi, '\{\{ASIN|$1\}\}');

  //Replacements in citation templates
  //Replace isbn= followed by isbn13=
  str = str.replace(/\|\s*isbn\s*=\s*[\d-X]+\s*[,;\/]\s*\{\{isbn\|([\d-\s*]+)\}\}\s*([\}\|])/gi, '\|isbn=$1$2');
  str = str.replace(/(\|\s*isbn\s*=\s*)[\d-X]+\s*\|\s*isbn13\s*=\s*([\d-]+\s*[\}\|])/gi, '$1$2');
  //Replace isbn= followed by isbn= (case insensitive) - keep 13-digit 97* version if possible
  str = str.replace(/(\|\s*isbn\s*=\s*)(97[\d-]+\s*)\|\s*isbn\s*=\s*[\d-X]+\s*([\}\|])/gi, '$1$2$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)[\d-X]+\s*\|\s*isbn\s*=\s*([\d-]+\s*[\}\|])/gi, '$1$2');
  //Replace isbn= followed by two ISBNs
  str = str.replace(/(\|\s*isbn\s*=\s*)(97[89][\d-]+)\s*[,\/;:\(]\s*[\d-X]+\)*\s*([\}\|])/gi, '$1$2$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)[\d-X]+\s*[,\/;:]\s*([\d-]+\s*[\}\|])/gi, '$1$2');
  str = str.replace(/(\|\s*isbn\s*=\s*)[\d-X]+\s*[,;:\/]*\s*ISBN\s*([\d-]+\s*[\}\|])/gi, '$1$2');
  str = str.replace(/(\|\s*isbn\s*=\s*)ISBN\s*[\d-X]+\s*[,;:\/]*\s*ISBN\s*([\d-]+\s*[\}\|])/gi, '$1$2');
  str = str.replace(/(\|\s*isbn\s*=\s*)(97[89][\d-]+)\s\d\d\d\d\d\d\d\d\d[\dX]\s*([\}\|])/gi, '$1$2$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)\d\d\d\d\d\d\d\d\d[\dX]\s(97[89][\d-]+\s*[\}\|])/gi, '$1$2');
  //Replace isbn= trailing or leading stray punctuation
  str = str.replace(/(\|\s*isbn\s*=\s*[\d-X]+)[\.\,\;\)\/]\s*([\}\|])/gi, '$1$2');
  str = str.replace(/(\|\s*isbn\s*=)=\s*([\d-X]+)\s*([\}\|])/gi, '$1$2$3');
  //Change = and other separators to - in ISBN value
  str = str.replace(/(\|\s*isbn\s*=\s*[\d- ]+)[−=‐–—‑\.]([\d-X ]+)\s*([\}\|])/gi, '$1-$2$3');
  str = str.replace(/(\|\s*isbn\s*=\s*[\d- ]+)[−=‐–—‑\.]([\d- ]+)[=–—‐‑\.]([\d-X ]+)\s*([\}\|])/gi, '$1-$2-$3$4');
  str = str.replace(/(\|\s*isbn\s*=\s*[\d- ]+)[−=‐–—‑\.]([\d- ]+)[=–—‐‑\.]([\d- ]+)[=–—‐‑\.]([\d-X ]+)\s*([\}\|])/gi, '$1-$2-$3-$4$5');
  str = str.replace(/(\|\s*isbn\s*=\s*[\d- ]+)[−=‐–—‑\.]([\d- ]+)[=–—‐‑\.]([\d- ]+)[=–—‐‑\.]([\d-X ]+)[=‐–—‑\.]([\d- ]+)\s*([\}\|])/gi, '$1-$2-$3-$4-$5$6');
  //Comment "n/a" or "unknown"
  str = str.replace(/(\|\s*isbn\s*=\s*)(n\/a\s*)([\}\|])/gi, '$1<!--$2-->$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)(na\s*)([\}\|])/gi, '$1<!--$2-->$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)(unknown\s*)([\}\|])/gi, '$1<!--$2-->$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)(nk\s*)([\}\|])/gi, '$1<!--$2-->$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)(no isbn\s*)([\}\|])/gi, '$1<!--$2-->$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)(none\s*)([\}\|])/gi, '$1<!--$2-->$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)(none given\s*)([\}\|])/gi, '$1<!--$2-->$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)(unspecified\s*)([\}\|])/gi, '$1<!--$2-->$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)(\?+\s*)([\}\|])/gi, '$1<!--$2-->$3');
  //Change case of trailing "x"
  str = str.replace(/(\|\s*isbn\s*=\s*)([\d-]+)x(\s*[\}\|])/gi, '$1$2X$3');
  //Remove extraneous trailing character
  str = str.replace(/(\|\s*isbn\s*=\s*)([\d-X]+)[a-wyz](\s*[\}\|])/gi, '$1$2$3'); 
  //Remove extraneous trailing text in parentheses
  str = str.replace(/(\|\s*isbn\s*=\s*)([\d-X]+\s*)\([a-z -\;\,]+\.*\)(\s*[\}\|])/gi, '$1$2$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)[\d-X]+\s*\([a-z -\;\,]+\.*\)\s*[,\/;]\s*([\d-X]+\s*)\([a-z -\;\,]+\.*\)(\s*[\}\|])/gi, '$1$2$3');
  str = str.replace(/(\|\s*isbn\s*=\s*)[\d-X]+\s*\([a-z -\;\,]+\.*\)\s*[,\/;]\s*ISBN\s*([\d-X]+\s*)\([a-z -\;\,]+\.*\)(\s*[\}\|])/gi, '$1$2$3');
  //Comment any "ISBN" starting with 977 (probably a UPC)
  str = str.replace(/(\|\s*isbn\s*=\s*977[\d-]+)(\s*[\}\|])/gi, '<!--$1-->$2');
  //Replace isbn= followed by prefix 
  str = str.replace(/(\|\s*isbn\s*=\s*)13:* (97[89][\d-]+\.*\s*[\}\|])/gi, '$1$2');
  str = str.replace(/(\|\s*isbn\s*=\s*)10:* ([\d-X]+\.*\s*[\}\|])/gi, '$1$2');
  str = str.replace(/(\|\s*isbn\s*=\s*)ISBN[103:]*\s*([\d-X]+\.*\s*[\}\|])/gi, '$1$2');
  //Replace Billboard "ISBN" with ISSN
  str = str.replace(/\|\s*isbn\s*=\s*(0006-*2510\s*[\}\|])/gi, '\|issn=$1');
  //Delete "please check ISBN" template
  str = str.replace(/(\|\s*isbn\s*=\s*[\d-X]+\s*)\{\{Please check ISBN\|reason\=[a-z\d\s\.\(\)]+\}\}/gi, '$1');
  //ISBN is really ISSN
  str = str.replace(/\|\s*isbn\s*=\s*(\d\d\d\d-\d\d\d[\dX]\s*[\}\|])/gi, '\|issn=$1');
  str = str.replace(/\|\s*isbn\s*=\s*issn\s*(\d\d\d\d-\d\d\d[\dX]\s*[\}\|])/gi, '\|issn=$1');
  //ISBN is explicitly an ASIN
  str = str.replace(/\|\s*isbn\s*=\s*ASIN\:*\s*([\da-z]+\s*[\}\|])/gi, '\|asin=$1');
  //Whittaker Chambers, Witness
  str = str.replace(/\|\s*isbn\s*=\s*52-5149\s*([\}\|])/gi, '\|lccn = 52005149 $1');
  //Cochrane bogus ISBN
  str = str.replace(/\|\s*isbn\s*=\s*14651858\s*([\}\|])/gi, '\|isbn = $1'); 
  //Chambers Dictionary bogus ISBN
  str = str.replace(/\|\s*isbn\s*=\s*979-8186-06236-3\s*([\}\|])/gi, '\|isbn = 9788186062364$1'); 
  
// try to work this in:
// ({{\s*[cC]it[ea](?:[^}{]*(?:\{\{[^}{]*}}[^}{]*)*)\|\s*)isbn(\s*=\s*)

  //one-off replacement of "Royal Navy destroyers since 1945"
  str = str.replace(/ISBN 0 7710 1817 0/gi, 'ISBN 0 7110 1817 0');
  
  //copied from one-off script

  //Fix ISBN outside of cite template
  str = str.replace(/ i[sS][bB][nN]\s([\d\-X ][\dX]+)/g, '{{ISBN|$1}}');
  str = str.replace(/I[sS][bB]n\s*([\d\-X ][\dX]+)/g, '{{ISBN|$1}}');
  str = str.replace(/\[+ISBN\s*\|\s*([\d\-X ]+[\dX]+)\]+/gi, '{{ISBN|$1}}');
  str = str.replace(/\[*ISBN[ -]1[03]:\s*([\d\-X]+)\]*/g, '{{ISBN|$1}}');
  str = str.replace(/\[*ISBN *[#:−‐–—‑-] *([\d\-X]+)\]*/gi, '{{ISBN|$1}}');
  str = str.replace(/\[*ISBN *\/ *EAN *[#:−‐–—‑-]* *([\d\-X]+)\]*/g, '{{ISBN|$1}}');
  str = str.replace(/\[*EAN *[#:−‐–—‑-] *([\d\-X]+)\]*/gi, '{{ISBN|$1}}');
  str = str.replace(/EAN\s+([\d\-X]+)/g, '{{ISBN|$1}}');
  str = str.replace(/\[*ISBN *\t *([\d\-X]+)\]*/g, '{{ISBN|$1}}');
  str = str.replace(/\| *id *= *isbn *=*/gi, '\| ISBN =');
  str = str.replace(/([;\.,\)\]] )ISBN *[=:\t] *([\d\-X]+)/gi, '$1{{ISBN|$2}}');
  str = str.replace(/([ \[\>,])(books\.google)/g, '$1http:\/\/$2');
  str = str.replace(/(ISBN\s+)(97[89][\d\-]+)\s*[,\/;:\(]\s*[\d\-][\d\-][\d\-][\d\-][\d\-][\d\-][\d\-][\d\-][\d\-][\d\-X]+/gi, '{{$1|$2}}');
  str = str.replace(/(ISBN\s+)\d\-*\d\-*\d\-*\d\-*\d\-*\d\-*\d\-*\d\-*\d\-*[\dX]\s*[\s/]\s*(97[89][\d\-]+)/gi, '{{$1|$2}}');
  str = str.replace(/(ISBN\s+)[\d\-X]+\s*[,;:\/]*\s*ISBN\s*([\d\-]+)/gi, '{{$1|$2}}');
  str = str.replace(/ISBN:* ISBN ([\d\-X])/gi, '{{ISBN|$1}}');
  str = str.replace(/\[*(ISBN)\]*\s*\[*\s*([\d\-X]+)\]*/gi, '{{$1|$2}}');
  str = str.replace(/\[+International Standard Book Number\|ISBN\]+\&nbsp\;([\d\-X]+)/g, '{{ISBN|$1}}');
  
  // Source in a bunch of articles with wrong ISBN
  str = str.replace(/isbn=9791234567896/gi, 'isbn=9788890390227');
  
  //Fix ISBN dashes
  str = str.replace(/(\s*isbn\s*[\d-]+)\s*[−‐–—‑\.]\s*([\d-]+)\s*[=–—‐‑\.]\s*([\d-]+)\s*[=–—‐‑\.]\s*([\d-X]+)\s*[=‐–—‑\.]([\d-]+)\s*[=‐–—‑\.]\s*(\d+)/gi, '$1-$2-$3-$4-$5-$6');
  str = str.replace(/(\s*isbn\s*[\d-]+)\s*[−‐–—‑\.]\s*([\d-]+)\s*[=–—‐‑\.]\s*([\d-]+)\s*[=–—‐‑\.]\s*([\d-X]+)\s*[=‐–—‑\.]\s*(\d+)/gi, '$1-$2-$3-$4-$5');
  str = str.replace(/(\s*isbn\s*[\d-]+)\s*[−‐–—‑\.]\s*([\d- ]+)[=–—‐‑\.]\s*([\d-]+)\s*[=–—‐‑]([\d-X ]+)/gi, '$1-$2-$3-$4');
  str = str.replace(/(\s*isbn\s*[\d-]+)\s*[−‐–—‑\.]\s*([\d- ]+)[=–—‐‑]\s*([\d-X]+)/gi, '$1-$2-$3');
  str = str.replace(/(\s*isbn\s*[\d-]+)\s*[−‐–—‑]\s*([\d-X ]+)/gi, '$1-$2');

  //Strip spaces around hyphens
  str = str.replace(/(\s*ISBN\s*[\d]+)[\s*\-]+([\d]+)[\s*\-]+([\d]+)[\s*\-]+([\dX]+)[\s*\-]+([\dX]+)[\s*\-]+([\dX]+)/g, '$1-$2-$3-$4-$5-$6');
  str = str.replace(/(\s*ISBN\s*[\d]+)[\s*\-]+([\d]+)[\s*\-]+([\d]+)[\s*\-]+([\dX]+)[\s*\-]+([\dX]+)/g, '$1-$2-$3-$4-$5');
  str = str.replace(/(\s*ISBN\s*[\d]+)[\s*\-]+([\d]+)[\s*\-]+([\d]+)[\s*\-]+([\dX]+)/g, '$1-$2-$3-$4');

  //rm templatestyles code inserted somehow
  str = str.replace(/\<templatestyles src\=\"Module\:Citation\/CS1\/styles\.css\" \/\>/gi, '');

  //nowiki Visual Editor bug, needs to be at the end
  //
  str = str.replace(/\<nowiki\>(ISBN [\d-X]+)\<\/nowiki\>/gi, '$1');


 //Unrelated to ISBN: Hyphenate deprecated multiword parameters and redundant ref=harv while we're here
  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*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*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*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*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*ref\s*=\s*harv\s*([\|\}])/g, '$1$2');


  return str;
}
 
function autoEdFunctions() { //Activates individual modules when "auto ed" tab is clicked
    var txt = document.editform.wpTextbox1; //This stays as "Textbox1". Do not increment.
    txt.value = ReplacetwoISBNparams(txt.value);
//    txt.value = autoEdWhitespace(txt.value);
}

// </syntaxhighlight>