コンテンツにスキップ

利用者:Yushu-kasai/tools/Style.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

// jastyle
var jastyle_version = '0.7.0.1';
jastyle_autostyle_namespaces = [ '', 'Category', 'Template', 'Portal', 'Help', 'Wikipedia', 'User', 'File' ];

function jastyle() {
  var styleBasic         = document.getElementById('basicStyle');
  var styleZenhan       = document.getElementById('zenhanStyle');
  var styleQuot         = document.getElementById('quotStyle');
  var styleRoman        = document.getElementById('romanStyle');
  var styleWord         = document.getElementById('wordStyle');
  var styleHankana         = document.getElementById('hankanaStyle');
  var styleRefGroup     = document.getElementById('refGroupStyle');
  var styleRefEx        = document.getElementById('refExStyle');
  var styleRef     = document.getElementById('refStyle');
  var styleRefList      = document.getElementById('refListStyle');
  var styleHttps        = document.getElementById('httpsStyle');
  var styleList      = document.getElementById('listStyle');
  var styleHead        = document.getElementById('headStyle');
  var styleDebug        = document.getElementById('debugStyle');
  
  var wgPageName = mw.config.get('wgPageName');
  //var wgIsArticle = mw.config.get('wgIsArticle');
  //var wgAction = mw.config.get('wgAction');
  //var wgNamespaceNumber = mw.config.get('wgNamespaceNumber');
  //alert(wgPageName + '\r\n' + wgIsArticle + '\r\n' + wgAction + '\r\n' + wgNamespaceNumber);
  
  var wgPageNameCnv = wgPageName.replace(/\_/g, ' ');
  var wgPageNameReg = wgPageNameCnv.replace(/\(/g, '\\(').replace(/\)/g, '\\)').replace(/\+/g, '\\+').replace(/\?/g, '\\?').replace(/\$/g, '\\$');
  
  // 「一般的な修正」にチェックがついていなかったら処理を抜ける
  if(styleBasic && !styleBasic.checked) return;
  
  var strips = new Array();
  var edit = document.getElementById('wpTextbox1');
  var out = edit.value.
  
  replace(/^/, '作業用</ref>').
  replace(/$/, '<ref>作業用').

  replace(/( \[\[/g, '([[').
  replace(/\]\] )/g, ']])').

  replace(/ +\|/g, ' |').

  replace(/ ?\(([^\(\)(]+))/g, '($1)').
  replace(/(([^()\(]+)\)/g, '($1)').

  replace(/(\t\s)(\t\s)+\n/g, '\n').
  replace(/ +\n/g, '\n').

  replace(/([ァ-ヴ])-([ァ-ヴ・])/g, '$1ー$2').
  replace(/([ァ-ヴ])-(。|、)/g, '$1ー$2').

  replace(/<nowiki>\|<\/nowiki>/g, '{{!}}').
  replace(/\| *url *(http)/g, '|url=http').

  replace(/\<ref\>[、。\,]/g, '<ref>').
  replace(/\<ref( name *= *\"*[^\"\>\/]+\"*)*\>[、。\,]/g, '<ref$1>').
  
  replace(/<nowiki><\/* *br *\/*><\/nowiki>/g, '<br />').
  replace(/<nowiki> +<\/nowiki>/g, '').

  replace(/\|( *)(access\-*date|date|publisher|newspaper|agency|work)( *)[-~=]/g, '|$1$2$3=').
  replace(/\|( *)(access\-*date|date|publisher|newspaper|agency|work)( *)= *=/g, '|$1$2$3=').
  replace(/\|( *)author=link/g, '|$1author-link').
  replace(/\|( *)(publisher|author|newspaper|agency|work)= *\|/g, '|$1').
  
  replace(/\| *pages *=([^\|\}]+)頁/g, '|pages=$1').
  
  replace(/\| *df=ja */g, '').

replace(/(aceessdate|acceessdate|acceesdate|accesdate|acessdate|acccessdate|accessdata)/g, 'accessdate').
  replace(/accessdat( *)=/g, 'accessdate$1=').
  replace(/\|( *)Accessdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)accessdate( *)([0-9]{4})/g, '|$1accessdate$2=$3').
  replace(/\|( *)[^a=\|]*ccessdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)a[^c=\|]*cessdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)ac[^c=\|]*essdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)acc[^e=\|]*ssdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)acce[^s=\|]*sdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)acces[^s=\|]*date( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)access[^d=\|]*ate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)accessd[^a=\|]*te( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)accessda[^t=\|]*e( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)accessdat[^e=\|]*( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)a[^=\|]+ccessdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)ac[^=\|]+cessdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)acc[^=\|]+essdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)acce[^=\|]+ssdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)acces[^=\|]+sdate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)access[^=\|\-]+date( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)accessd[^=\|]+ate( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)accessda[^=\|]+te( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)accessdat[^=\|]+e( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)accessdate[^=\| ]+( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)accessdate *\|/g, '|$1accessdate=').
  replace(/\|( *)accessdaet( *)=/g, '|$1accessdate$2=').
  replace(/\|( *)(dat|ate|daet|d[^a]te|da[^t]e)( *)=/g, '|$1date$3=').
  replace(/\|( *)ccess/g, '|$1access').
  replace(/\|( *)p*u*blishe*r*( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publishre*( *)=/g, '|$1publisher$2=').
  replace(/\|( *)ublisher*( *)=/g, '|$1publisher$2=').
  replace(/\|( *)[^p=\|]*ublisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)p[^u=\|]*blisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)pu[^b=\|]*lisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)pub[^l=\|]*isher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publ[^i=\|]*sher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publi[^s=\|]*her( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publis[^h=\|]*er( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publish[^e=\|]*r( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publishe[^rd=\|]*( *)=/g, '|$1publisher$2=').
  replace(/\|( *)p[^=\|]+ublisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)pu[^=\|]+blisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)pub[^=\|]+lisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publ[^=\|]+isher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publi[^=\|]+sher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publis[^=\|]+her( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publish[^=\|]+er( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publishe[^=\|]+r( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publisher[^=\| ]+( *)=/g, '|$1publisher$2=').
  replace(/\|( *)pbulisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)pulbisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)pubilsher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publsiher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publihser( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publisehr( *)=/g, '|$1publisher$2=').
  replace(/\|( *)puiblisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)[o@P]ublisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)[^pP]ublisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)p.ublisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)pu.blisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)pub.lisher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publ.isher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publi.sher( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publis.her( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publish.er( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publishe.r( *)=/g, '|$1publisher$2=').
  replace(/\|( *)publisher( *)[\-\~:;]/g, '|$1publisher$2=').
  replace(/\|( *)publisher( *)([^ \=2i])/g, '|$1publisher$2=$3').
  
  replace(/\|( *)a*uthor*([0-9]*)( *)=/g, '|$1author$2$3=').
  replace(/\|( *)(autore|auhtor|autohr)([0-9]*)( *)=/g, '|$1author$3$4=').
  replace(/\|( *)[^a=]*uthor([0-9]*)( *)=/g, '|$1author$2$3=').
  replace(/\|( *)a[^u=]*thor([0-9]*)( *)=/g, '|$1author$2$3=').
  replace(/\|( *)au[^t=]*hor([0-9]*)( *)=/g, '|$1author$2$3=').
  replace(/\|( *)aut[^h=]*or([0-9]*)( *)=/g, '|$1author$2$3=').
  replace(/\|( *)auth[^o=]*r([0-9]*)( *)=/g, '|$1author$2$3=').
  replace(/\|( *)autho[^r=]*([0-9]*)( *)=/g, '|$1author$2$3=').
  
  replace(/\|( *)ebsite( *)=/g, '|$1website$2=').
  replace(/\|( *)wbsite( *)=/g, '|$1website$2=').
  replace(/\|( *)wesite( *)=/g, '|$1website$2=').
  replace(/\|( *)webite( *)=/g, '|$1website$2=').
  replace(/\|( *)webste( *)=/g, '|$1website$2=').
  replace(/\|( *)websit( *)=/g, '|$1website$2=').

  replace(/\|( *)ewbsite( *)=/g, '|$1website$2=').
  replace(/\|( *)wbesite( *)=/g, '|$1website$2=').
  replace(/\|( *)wesbite( *)=/g, '|$1website$2=').
  replace(/\|( *)webiste( *)=/g, '|$1website$2=').
  replace(/\|( *)webstie( *)=/g, '|$1website$2=').
  replace(/\|( *)websiet( *)=/g, '|$1website$2=').

  replace(/\|( *)[^w]ebsite( *)=/g, '|$1website$2=').
  replace(/\|( *)w[^e]bsite( *)=/g, '|$1website$2=').
  replace(/\|( *)we[^b]site( *)=/g, '|$1website$2=').
  replace(/\|( *)web[^s]ite( *)=/g, '|$1website$2=').
  replace(/\|( *)webs[^i]te( *)=/g, '|$1website$2=').
  replace(/\|( *)websi[^t]e( *)=/g, '|$1website$2=').
  replace(/\|( *)websit[^e]( *)=/g, '|$1website$2=').

  replace(/\|( *)ewspaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)nwspaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)nespaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newpaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newsaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspaer( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspapre*( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspape( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspapar( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspeper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspepar( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)nwespaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)[^n=\|]ewspaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)n[^e=\|]wspaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)ne[^w=\|]spaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)new[^s=\|]paper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)news[^p=\|]aper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newsp[^a=\|]per( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspa[^p=\|]er( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspap[^e=\|]r( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspape[^r=\|]( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)n[^=\|]+ewspaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)ne[^=\|]+wspaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)new[^=\|]+spaper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)news[^=\|]+paper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newsp[^=\|]+aper( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspa[^=\|]+per( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspap[^=\|]+er( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspape[^=\|]+r( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspaper[^= \|\}]+( *)=/g, '|$1newspaper$2=').
  replace(/\|( *)newspaper( +)([^= \|\}]+)/g, '|$1newspaper$2=$3').
  replace(/\|( *)newspaper([^= \|\}]+)/g, '|$1newspaper=$2').
  replace(/\|( *)a *u *t *h *o *r( *)=/g, '|$1author$2=').
  replace(/\|( *)y*ear*( *)=/g, '|$1year$2=').
  replace(/\|( *)m*onth*( *)=/g, '|$1month$2=').
  
  replace(/(date|access\-*date|archive\-*date) *= *January ([0-9]{1}), *([0-9]{4})/g, '$1=$3-01-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *January ([0-9]{2}), *([0-9]{4})/g, '$1=$3-01-$2').
  replace(/(date|access\-*date|archive\-*date) *= *February ([0-9]{1}), *([0-9]{4})/g, '$1=$3-02-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *February ([0-9]{2}), *([0-9]{4})/g, '$1=$3-02-$2').
  replace(/(date|access\-*date|archive\-*date) *= *March ([0-9]{1}), *([0-9]{4})/g, '$1=$3-03-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *March ([0-9]{2}), *([0-9]{4})/g, '$1=$3-03-$2').
  replace(/(date|access\-*date|archive\-*date) *= *April ([0-9]{1}), *([0-9]{4})/g, '$1=$3-04-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *April ([0-9]{2}), *([0-9]{4})/g, '$1=$3-04-$2').
  replace(/(date|access\-*date|archive\-*date) *= *May ([0-9]{1}), *([0-9]{4})/g, '$1=$3-05-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *May ([0-9]{2}), *([0-9]{4})/g, '$1=$3-05-$2').
  replace(/(date|access\-*date|archive\-*date) *= *June ([0-9]{1}), *([0-9]{4})/g, '$1=$3-06-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *June ([0-9]{2}), *([0-9]{4})/g, '$1=$3-06-$2').
  replace(/(date|access\-*date|archive\-*date) *= *July ([0-9]{1}), *([0-9]{4})/g, '$1=$3-07-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *July ([0-9]{2}), *([0-9]{4})/g, '$1=$3-07-$2').
  replace(/(date|access\-*date|archive\-*date) *= *August ([0-9]{1}), *([0-9]{4})/g, '$1=$3-08-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *August ([0-9]{2}), *([0-9]{4})/g, '$1=$3-08-$2').
  replace(/(date|access\-*date|archive\-*date) *= *September ([0-9]{1}), *([0-9]{4})/g, '$1=$3-09-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *September ([0-9]{2}), *([0-9]{4})/g, '$1=$3-09-$2').
  replace(/(date|access\-*date|archive\-*date) *= *October ([0-9]{1}), *([0-9]{4})/g, '$1=$3-10-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *October ([0-9]{2}), *([0-9]{4})/g, '$1=$3-10-$2').
  replace(/(date|access\-*date|archive\-*date) *= *November ([0-9]{1}), *([0-9]{4})/g, '$1=$3-11-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *November ([0-9]{2}), *([0-9]{4})/g, '$1=$3-11-$2').
  replace(/(date|access\-*date|archive\-*date) *= *December ([0-9]{1}), *([0-9]{4})/g, '$1=$3-12-0$2').
  replace(/(date|access\-*date|archive\-*date) *= *December ([0-9]{2}), *([0-9]{4})/g, '$1=$3-12-$2').
  
  replace(/(\| *)(date|access\-*date|archive\-*date)([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})( *)([\}\|])/g, '$1$2=$3-$4-$5$6$7').
  replace(/(\| *)(date|access\-*date|archive\-*date)([0-9]{4})年([0-9]{1,2})月([0-9]{1,2})日( *)([\}\|])/g, '$1$2=$3年$4月$5日$6$7').
  
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4})\-([0-9]{2})([0-9]{2}) *([\}\|])/g, '$1$2$3=$4$5-$6-$7$8').
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4})[\/\.]([0-9]+)[\/\.]([0-9]+)([^0-9])/g, '$1$2$3=$4$5-$6-$7$8').
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4})([0-9]{2})([0-9]{2})([^0-9])/g, '$1$2$3=$4$5-$6-$7$8').
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4})\-([0-9])([0-9]{2})\-([0-9]{2})([^0-9])/g, '$1$2$3=$4$5-$7-$8$9').
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4})\-([0-9]{2})\-([0-9])([0-9]{2})([^0-9])/g, '$1$2$3=$4$5-$6-$8$9').
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4})\-0([0-9])\-([0-9])([^0-9])/g, '$1$2$3=$4$5-0$6-0$7$8').
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4})\-([0-9])\-0([0-9])([^0-9])/g, '$1$2$3=$4$5-0$6-0$7$8').
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4})\-\-*([0-9]{2})\-\-*([0-9]{2})([^0-9])/g, '$1$2$3=$4$5-$6-$7$8').
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)= *=( *)([0-9]{4})/g, '$1$2$3=$4$5').
  replace(/(\| *)(dat|access\-*dat|archive\-*dat)a( *= *[0-9]{4}\-[0-9]{2}\-[0-9]{2}[^0-9])/g, '$1$2e$3').
  
  //replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4})年([0-9]{2})月([0-9]{2})日/g, '$1$2$3=$4$5-$6-$7').
  replace(/(\| *)(date|access\-*date|archive\-*date)( *)=( *)([0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日)/g, function(){ return(arguments[1] + arguments[2] + arguments[3] + '=' + arguments[4] + replaceDate(arguments[5])); }).
  
  replace(/\| *\|( *)(date|access\-*date|archive\-*date|publisher|journal|author|url|title)( *=)/g, '|$1$2$3').
  replace(/\|( *)(date|access\-*date|archive\-*date|publisher|journal|author|url|title)( *)=+/g, '|$1$2$3=').
  replace(/|( *)(date|access\-*date|archive\-*date|publisher|journal|author|url|title)( *)=+/g, '|$1$2$3=').

  replace(/([0-9]{4})[--]([0-9]{1,2})[--]([0-9]{1,2})/g, '$1-$2-$3').

  replace(/\[(hhttp|ttp|htp)/g, '[http').
  replace(/\[ http/g, '[http').
  
  replace(/ていいる/g, 'ている').
  replace(/していおり([^ん])/g, 'しており$1').
  replace(/ていおり([^ん])/g, 'ており$1').
  replace(/しため、/g, 'したため、').
  replace(/しために/g, 'したために').
  replace(/されおり/g, 'されており').
  replace(/られいる/g, 'られている').
  replace(/られいた/g, 'られていた').
  replace(/られいて/g, 'られていて').
  replace(/られおり/g, 'られており').
  replace(/れおり/g, 'れており').
  replace(/されるる。/g, 'される。').
  replace(/されたた。/g, 'された。').
  replace(/されたたため/g, 'されたため').
  replace(/されたいた/g, 'されていた').
  replace(/されが、/g, 'されたが、').
  replace(/さたが、/g, 'されたが、').
  replace(/れたいた/g, 'れていた').
  replace(/いるは、/g, 'いるのは、').
  replace(/たた。/g, 'た。').
  replace(/([^だ])ことなった/g, '$1こととなった').
  
  replace(/<!-- +-->/g, '').

  replace(/^\n+‎‎/g, '').
  
  replace(/‼︎/g, '!!').  // U+203C
  replace(/⁉️/g, '!?').  // U+2049
  replace(/❓/g, '?').  // U+2753
  replace(/❔/g, '?').  // U+2754
  replace(/❕/g, '!').  // U+2755
  replace(/❗/g, '!');  // U+2756

  // 「debug」にチェックがついていたら処理を行なう
  if(styleDebug && styleDebug.checked) {
    debugL = "【";
    debugR = "】";
  } else {
    debugL = "";
    debugR = "";
  }
  
  // 「全角文字を修正」にチェックがついていたら処理を行なう
  if(styleZenhan && styleZenhan.checked) {
    // 全角英数・記号
    out = out.
      //replace(/(<\/ref>|<ref[^>\/]+\/>)([^<>]+)(<ref[^>]*>|<ref[^>\/]+\/>)/g, function(){ return(arguments[1] + replaceZenToHan(arguments[2]) + arguments[3]); });
      replace(/(<\/ref>|<ref[^>\/]+\/>)(?!<ref)([\s\S]+?)(<ref[^>]*>|<ref[^>\/]+\/>)/g, function(){ return(arguments[1] + debugL + replaceZenToHan(arguments[2]) + debugR + arguments[3]); });
  }

  // 「英字括弧を修正」にチェックがついていたら処理を行なう
  if(styleQuot && styleQuot.checked) {
    out = out.
    replace(/""/g, '"').
    //replace(/〝/g, '「').replace(/〟/g, '」').
    replace(/〝/g, '“').replace(/〟/g, '”').
    replace(/′/g, "'").
    replace(/’/g, "'").
    replace(/”([^“”]+)”/g, '“$1”').
    replace(/“([^“”]+)“/g, '“$1”');
  }

  // 「ローマ数字を修正」にチェックがついていたら処理を行なう
  if(styleRoman && styleRoman.checked) {
    out = out.
    replace(/Ⅰ/g, 'I').replace(/Ⅱ/g, 'II').replace(/Ⅲ/g, 'III').replace(/Ⅳ/g, 'IV').replace(/Ⅴ/g, 'V').
    replace(/Ⅵ/g, 'VI').replace(/Ⅶ/g, 'VII').replace(/Ⅷ/g, 'VIII').replace(/Ⅸ/g, 'IX').replace(/Ⅹ/g, 'X');
  }

  // 「日本語表記を簡単化」にチェックがついていたら処理を行なう
  if(styleWord && styleWord.checked) {
    out = out.
    replace(/(曽て|嘗て)/g, 'かつて').
    replace(/いづれ/g, 'いずれ').
    replace(/生れ/g, '生まれ').
    replace(/歿/g, '没').
    replace(/けっきょく/g, '結局').
    replace(/始る/g, '始める').
    replace(/乍ら/g, 'ながら').
    replace(/([^あ-ん])ととして/g, '$1として').
    replace(/([^あ-ん(\(「])でで([^あ-ん)\)」])/g, '$1で$2').
    replace(/([^あ-ん(\(「])にに([^あ-ん)\)」])/g, '$1に$2').
    replace(/([^あ-ん(\(「])をを([^あ-ん)\)」])/g, '$1を$2').
    //replace(/ていてる/g, 'ている').
    replace(/いてる。/g, 'いている。').
    replace(/ていてい*る/g, 'ている').
    replace(/ていてい*た/g, 'ていた').
    //replace(/たいう/g, 'たという').
    replace(/さた。/g, 'された。').
    replace(/されてた/g, 'されていた').
    replace(/されてる/g, 'されている').
    
    replace(/こと(発表|発見|決定)され/g, 'ことが$1され').
    replace(/こと(発表|発見|決定)/g, 'ことを$1').
    //replace(/迄/g, 'まで').
    //replace(/及び/g, 'および').
    //replace(/並び/g, 'ならび').
    replace(/尚且つ/g, 'なおかつ').
    replace(/且つ/g, 'かつ').
    replace(/([、。\n])(なお|しかし)。/g, '$1$2、').
    //replace(/然も/g, 'さも').
    //replace(/又は/g, 'または').
    replace(/若しくは/g, 'もしくは').
    replace(/或いは/g, 'あるいは').
    replace(/即ち/g, 'すなわち').
    replace(/専ら/g, 'もっぱら').
    //replace(/故に/g, 'ゆえに').
    //replace(/更に/g, 'さらに').
    replace(/([、。\n\>(])尚/g, '$1なお').
    replace(/([、。\n\>(])但し/g, '$1ただし').
    replace(/([、。\n\>(])併し/g, '$1しかし').
    replace(/([、。\n\>(])然し/g, '$1しかし').
    replace(/ただし([^いくた、\))])/g, 'ただし、$1').
    replace(/因みに/g, 'ちなみに').
    replace(/所謂/g, 'いわゆる').
    //replace(/其の/g, 'その').
    replace(/或る/g, 'ある').
    replace(/ある感覚/g, '或る感覚').
    //replace(/貴方/g, 'あなた').
    replace(/其れ/g, 'それ').
    replace(/悉く/g, 'ことごとく').
    //replace(/何処/g, 'どこ').
    //replace(/何故/g, 'なぜ').
    replace(/殆ど/g, 'ほとんど');
  }

  out = out.
  replace(/、。/g, '。').
  replace(/([うたる])。、/g, '$1。').
  replace(/▪/g, '・').
  
  replace(/と[い言]う[い言]う/g, 'という').
  replace(/れらて/g, 'られて').
  replace(/らてい([る|た|て])/g, 'られてい$1').
  replace(/えらえ/g, 'えられ').
  replace(/えらて/g, 'えられて').
  replace(/えれて/g, 'えられて').
  replace(/えらた/g, 'えられた').
  replace(/えれた/g, 'えられた').
  replace(/えれる/g, 'えられる').
  replace(/かからわず/g, 'かかわらず').
  replace(/かかわず/g, 'かかわらず').
  
  replace(/と*(」|』)(いう|言う)/g, '$1と$2').
  replace(/と*(」|』)(いって|言って)/g, '$1と$2').
  replace(/(」|』)とう([^あ-ん])/g, '$1という$2').
  replace(/とう(いう|言う)/g, 'と$1').
  
  replace(/(あ|お|な)リ、/g, '$1り、').
  
  replace(/(\]\]/g, ']](').
  replace(/([=\*])( *)\[([^\[\]]+)\]\]/g, '$1$2[[$3]]').
  
  replace(/heigth/g, 'height').
  replace(/arign( *)=/g, 'align$1=').
  replace(/align=(left|center|right)( |\|)/g, 'align="$1"$2').
  replace(/valign=(top|middle|bottom)( |\|)/g, 'valign="$1"$2').
  replace(/frame-align=\"center\"/g, 'frame-align=center').
  replace(/width=([0-9]+px)([ \|>])/g, 'width="$1"$2').
  replace(/height=([0-9]+px)([ \|>])/g, 'height="$1"$2').
  replace(/ (style|class|width|align|valign)( *)=/g, ' $1$2=').
  replace(/"style *=/g, '" style=').
  replace(/style=\";/g, 'style="').
  replace(/style=font-size:(smaller;*|small;*)/g, 'style="font-size:$1"').
  replace(/class="wikitable style=([^:]+:[^"]+)"/g, 'class="wikitable" style="$1"').
  replace(/class="wikitable" " style/g, 'class="wikitable" style').
  replace(/class="wikitable" "/g, 'class="wikitable" style="').
  //replace(/font-size:90%;"\|/g, 'font-size:90%;"').
  //replace(/ *height:[^;"\|]+;"\|/g, '"|').
  replace(/backgr*o*u*n*d/g, 'background').
  replace(/text *- *align/g, 'text-align').

  replace(/『「([^「『」]+)』/g, '『$1』').
  replace(/「『([^「『』]+)」/g, '「$1」').
  replace(/「([^「『」]+)』/g, '「$1」').
  replace(/『([^「『』]+)」/g, '『$1』');

  // 「半角仮名を修正」にチェックがついていたら処理を行なう
  if(styleHankana && styleHankana.checked) {
    out = out.
  replace(/、/g, '、').replace(/。/g, '。').
  replace(/ガ/g, 'ガ').replace(/ギ/g, 'ギ').replace(/グ/g, 'グ').replace(/ゲ/g, 'ゲ').replace(/ゴ/g, 'ゴ').
  replace(/ザ/g, 'ザ').replace(/ジ/g, 'ジ').replace(/ズ/g, 'ズ').replace(/ゼ/g, 'ゼ').replace(/ゾ/g, 'ゾ').
  replace(/ダ/g, 'ダ').replace(/ヂ/g, 'ヂ').replace(/ヅ/g, 'ヅ').replace(/デ/g, 'デ').replace(/ド/g, 'ド').
  replace(/バ/g, 'バ').replace(/ビ/g, 'ビ').replace(/ブ/g, 'ブ').replace(/ベ/g, 'ベ').replace(/ボ/g, 'ボ').
  replace(/パ/g, 'パ').replace(/ピ/g, 'ピ').replace(/プ/g, 'プ').replace(/ペ/g, 'ペ').replace(/ポ/g, 'ポ').
  replace(/ヴ/g, 'ヴ').
  replace(/ァ/g, 'ァ').replace(/ィ/g, 'ィ').replace(/ゥ/g, 'ゥ').replace(/ェ/g, 'ェ').replace(/ォ/g, 'ォ').
  replace(/ッ/g, 'ッ').replace(/ャ/g, 'ャ').replace(/ュ/g, 'ュ').replace(/ョ/g, 'ョ').
  replace(/ア/g, 'ア').replace(/イ/g, 'イ').replace(/ウ/g, 'ウ').replace(/エ/g, 'エ').replace(/オ/g, 'オ').
  replace(/カ/g, 'カ').replace(/キ/g, 'キ').replace(/ク/g, 'ク').replace(/ケ/g, 'ケ').replace(/コ/g, 'コ').
  replace(/サ/g, 'サ').replace(/シ/g, 'シ').replace(/ス/g, 'ス').replace(/セ/g, 'セ').replace(/ソ/g, 'ソ').
  replace(/タ/g, 'タ').replace(/チ/g, 'チ').replace(/ツ/g, 'ツ').replace(/テ/g, 'テ').replace(/ト/g, 'ト').
  replace(/ナ/g, 'ナ').replace(/ニ/g, 'ニ').replace(/ヌ/g, 'ヌ').replace(/ネ/g, 'ネ').replace(/ノ/g, 'ノ').
  replace(/ハ/g, 'ハ').replace(/ヒ/g, 'ヒ').replace(/フ/g, 'フ').replace(/ヘ/g, 'ヘ').replace(/ホ/g, 'ホ').
  replace(/マ/g, 'マ').replace(/ミ/g, 'ミ').replace(/ム/g, 'ム').replace(/メ/g, 'メ').replace(/モ/g, 'モ').
  replace(/ヤ/g, 'ヤ').replace(/ユ/g, 'ユ').replace(/ヨ/g, 'ヨ').
  replace(/ラ/g, 'ラ').replace(/リ/g, 'リ').replace(/ル/g, 'ル').replace(/レ/g, 'レ').replace(/ロ/g, 'ロ').
  replace(/ワ/g, 'ワ').replace(/ヲ/g, 'ヲ').replace(/ン/g, 'ン').replace(/ー/g, 'ー').
  replace(/゙/g, '゛').replace(/゚/g, '゜');
  }

  out = out.
  // 機種依存記号
  replace(/㍉/g, 'ミリ').replace(/㌔/g, 'キロ').
  replace(/㌢/g, 'センチ').replace(/㍍/g, 'メートル').
  replace(/㌘/g, 'グラム').replace(/㌧/g, 'トン').replace(/㌃/g, 'アール').
  replace(/㌶/g, 'ヘクタール').replace(/㍑/g, 'リットル').
  replace(/㍗/g, 'ワット').replace(/㌍/g, 'カロリー').replace(/㌦/g, 'ドル').
  replace(/㌣/g, 'セント').replace(/㌫/g, 'パーセント').
  replace(/㍊/g, 'ミリバール').replace(/㌻/g, 'ページ').
  replace(/㎜/g, 'mm').replace(/㎝/g, 'cm').replace(/㎞/g, 'km').
  replace(/㎎/g, 'mg').replace(/㎏/g, 'kg').replace(/㏄/g, 'cc').replace(/№/g, 'No.').
  replace(/㏍/g, 'K.K.').replace(/℡/g, 'Tel').replace(/㊤/g, '(上)').
  replace(/㊥/g, '(中)').replace(/㊦/g, '(下)').replace(/㊧/g, '(左)').
  replace(/㊨/g, '(右)').replace(/㈱/g, '(株)').replace(/㈲/g, '(有)').
  replace(/㈹/g, '(代)').replace(/㍾/g, '明治').replace(/㍽/g, '大正').
  replace(/㍼/g, '昭和').replace(/㍻/g, '平成').
  
  //テンプレート用条件文・変数
  replace(/\{\{PAGENAME\}\}/g, wgPageNameCnv).
  //本文中の自己リンク
  replace(new RegExp("\\[\\[" + wgPageNameReg + "\\]\\]", "g"), "'''" + wgPageNameCnv + "'''").
  replace(new RegExp("\\[\\[" + wgPageNameReg + "\\|(.*?)\\]\\]", "g"), "'''$1'''").

  replace(/''''''/g, "'''").
  replace(/\[\[(''+)([^\[\]']+)(''+)\]\]/g, "$1[[$2]]$3").
  
  replace(/\]\]\[([^\[\]]+)\]\]/g, ']][[$1]]').
  replace(/\[\[([^\[\]]+)\]\[\[/g, '[[$1]][[').
  
  replace(/([\*:])\[ \[/g, '$1 [[').
  replace(/([^\[])\[ \[([^\[])/g, '$1[[$2').
  replace(/\[\[( | )+/g, '[[').
  replace(/( | )+\]\]/g, ']]').
  replace(/([^\[])\[\[\[([^\[])/g, '$1[[$2').
  //replace(/([^\]])\]\]\]([^\]])/g, '$1]]$2');
  replace(/\[\[([^\[\]]+)([^\[\]])\]\]\]([^\]])/g, '[[$1$2]]$3').
  replace(/\{\{([^\{\}]+)([^\{\}])\}\}\}([^\}])/g, '{{$1$2}}$3').

  //リンク先とリンク文が同一(\1は後方参照)
  replace(/\[\[(.*?)\|(\1)\]\]/g, '[[$1]]').
  //replace(/\[\[(.*?)( \(.+\))\|(\1)(()\(\):;)\]\]/g, '[[$1$2|$1]]$3').
  
  replace(/「\[\[(.*?)\|(\1)」\]\]/g, '「[[$1]]」').
  replace(/『\[\[(.*?)\|(\1)』\]\]/g, '『[[$1]]』').
  
  replace(/「\[\[([^「」\|\[\]]+?)\|([^「」\|\[\]]+?)」\]\]/g, '「[[$1|$2]]」').
  replace(/『\[\[([^『』\|\[\]]+?)\|([^『』\|\[\]]+?)』\]\]/g, '『[[$1|$2]]』').
  
  replace(/「\[\[([^「」\|\[\]]+?)」\]\]/g, '「[[$1]]」').
  replace(/『\[\[([^『』\|\[\]]+?)』\]\]/g, '『[[$1]]』').

  replace(/\[\[[0-9]{3,4}年\|([0-9]{3,4}年)\]\]/g, '[[$1]]').
  replace(/\[\[[0-9]{1,2}月[0-9]{1,2}日\|([0-9]{1,2}月[0-9]{1,2}日)\]\]/g, '[[$1]]').
  replace(/\[\[[0-9]{1,2}月\|([0-9]{1,2}月)\]\]/g, '[[$1]]').
  replace(/\[\[[0-9]{1,2}日\|([0-9]{1,2}日)\]\]/g, '[[$1]]').
  
  replace(/\{\{(Template|template|テンプレート)\:/g, '{{').
  replace(/Wikipedia:ウィキプロジェクト /g, 'プロジェクト:').
  
  replace(/\{\{Birth date/gi, '{{生年月日と年齢').
  
  replace(/\{\{Cite /gi, '{{Cite ').
  replace(/\{\{Citeweb/gi, '{{Cite web').
  replace(/\{\{Cite Web/g, '{{Cite web').
  replace(/\{\{Citenews/gi, '{{Cite news').
  replace(/\{\{Cite News/g, '{{Cite news').
  replace(/\{\{Cite newspaper/gi, '{{Cite news').
  replace(/\{\{Citebook/gi, '{{Cite book').
  replace(/\{\{Cite Book/g, '{{Cite book').
  replace(/\{\{Citejournal/gi, '{{Cite journal').
  replace(/\{\{Cite Journal/g, '{{Cite journal').
  replace(/\{\{Cite *magazine/gi, '{{Cite journal').
  replace(/\{\{(Cite|cite)  *(web|news|book|journal)/g, '{{$1 $2').
  replace(/\{\{PDFLink/g, '{{PDFlink').

  replace(/(font-size|text-align|background-color)[:;;]/g, '$1:').
  
  replace(/bgcolor=#?([0-9a-fA-F]{6})/g, 'bgcolor="#$1"').
  replace(/bgcolor="([0-9a-fA-F]{6})"/g, 'bgcolor="#$1"').
  replace(/bgcolor=(red|green|blue|black|white|yellow|thistle|lime|gold|silver|gray)/g, 'bgcolor="$1"').
  
  replace(/! *style *= *\|/g, '!').
  replace(/\| *style *= *\|/g, '|').
  replace(/ style *= *\|/g, '|').
  replace(/(style *= *\"text-align *: *(left|center|right);)( *)\|/g, '$1"$3|').
  
  replace(/  +style( *)=/g, ' style$1=').
  replace(/  +class( *)=/g, ' class$1=').
  replace(/ style="([^"]+)([^;])" *style="([^"]+)"/g, ' style="$1$2; $3"').
  replace(/ style="([^"]+)" *style="([^"]+)"/g, ' style="$1 $2"').
  
  replace(/;*" "text-align/g, '; text-align').
  replace(/"; "text-align/g, '; text-align').
  replace(/; "/g, ';"').
  replace(/;""/g, ';"').
  replace(/;";"/g, ';"').
  replace(/;";/g, ';"').
  replace(/; ;/g, ';').

  replace(/\|style="background:.*?"\|( *)(<b>|<strong>|''')<center>(.*?)<\/center>(<\/b>|<\/strong>|''')/gi, "!$1$3").
  replace(/\|( *)(<b>|<strong>|''')<center>(.*?)<\/center>(<\/b>|<\/strong>|''')/gi, "!$1$3").
  
  replace(/\n\!( *)'''([^']+)'''/g, '\n!$1$2').
  
  replace(/'''([「『])([^』」]+)([』」])'''/g, "$1'''$2'''$3").
  replace(/'''([「『])([^』」]+)'''([』」])/g, "$1'''$2'''$3").
  replace(/([「『])'''([^』」]+)([』」])'''/g, "$1'''$2'''$3").
  
  replace(/ (style|class)=" +/g, ' $1="').
  replace(/ style="width="*/g, ' style="width:').
  
  replace(/;;"/g, ';"').
  
  replace(/\[\[category *:/g, '[[Category:').
  
  //ミスで入力されたタグを除去
  replace(/\{\{DEFAULTSORT\:\}\}/g, '').
  replace(/\{\{デフォルトソート\:\}\}/g, '').
  replace(/\[\[Category\:\]\]/g, '').
  replace(/#REDIRECT \[\[\]\]/g, '').
  replace(/<sup><\/sup>/g, '').
  replace(/<sub><\/sub>/g, '').
  replace(/<ins><\/ins>/g, '').
  replace(/<code><\/code>/g, '').
  replace(/<blockquote><\/blockquote>/g, '').
  replace(/<ref><\/ref>/g, '').
  replace(/<includeonly><\/includeonly>/g, '').
  replace(/<noinclude><\/noinclude>/g, '').
  replace(/<gallery><\/gallery>/g, '').
  replace(/\[\{\{fullurl\:\|\}\} \]/g, '');

  // 「脚注を修正 (group)」にチェックがついていたら処理を行なう
  if(styleRefGroup && styleRefGroup.checked) {
    out = out.
    replace(/ group=""/g, '');
  }

  // 「脚注を修正 (name)」にチェックがついていたら処理を行なう
  if(styleRefEx && styleRefEx.checked) {
    out = out.
    replace(/ name="*:([0-9]+)"*/g, ' name="ref$1"').
    replace(/ name="*:([^">]+)"*/g, ' name="$1"').
    replace(/\{\{R\|:([0-9]+)\}\}/g, '{{R|ref$1}}').
    replace(/\{\{R\|:([^\}]+)\}\}/g, '{{R|$1}}').
    replace(/ name="*example"*/g, ' name="refname"');
  }

  // 「脚注を修正 (全般)」にチェックがついていたら処理を行なう
  //if((styleRef && styleRef.checked) || out.match(/(\{\{Reflist|<reference)/i)) {
  if((styleRef && styleRef.checked) && out.match(/(\{\{Reflist|<reference)/i)) {
    out = out.
    replace(/< *ref *>/g, '<ref>').
    replace(/< *\/ref *>/g, '</ref>').
    //replace(/><\/ref>/g, ' />').
    //replace(/<ref name ?= ?("?.*?"?) ?><\/ref>/g, '<ref name=$1 />').
    //replace(/<ref name ?= ?("?.*?"?)\/>/g, '<ref name=$1 />').
    replace(/<ref name *= *"*([^"<>]+)"* *><\/ref> */g, '{{R|$1}}').
    replace(/<ref name *= *"*([^"<>]+)"* *\/> */g, '{{R|$1}}').
    replace(/\{\{R\|([^\}]+)\}\}\{\{R\|([^\}]+)\}\}/g, '{{R|$1|$2}}').
    replace(/\{\{R\|([^\}\|]+) +\}\}/g, '{{R|$1}}').
    replace(/<\/(small|cite|span|div) \/>/g, '</$1></ref>').
    replace(/-- \/>/g, '--></ref>').
    replace(/  +\/>/g, ' />').
    
    replace(/<ref *group *= */g, '<ref group=').
    replace(/<ref *group *= *>/g, '<ref>').
    replace(/<ref *group *>/g, '<ref>').
    
    replace(/<ref *= *name/g, '<ref name=').
    replace(/<ref *=/g, '<ref name=').
    replace(/<ref *name *= */g, '<ref name=').
    replace(/<ref *name *[“”""’']/g, '<ref name="').
    replace(/<ref name[-~:;=]/g, '<ref name=').
    replace(/<ref name=([^ >]*?)( *)>/g, '<ref name=$1>').
    replace(/<ref name="+([^ >\/]+)"+([ \/]*)>/g, '<ref name="$1"$2>').
    replace(/<ref name=""([^ >\/]+)([ \/]*)>/g, '<ref name="$1"$2>').
    
    replace(/<ref name='+([^“”"″’'\/]*?)'+/g, '<ref name="$1"').
    replace(/<ref name=[“”"″’']([^“”"″’'\/]*?)[“”"″’']( *)\/>/g, '<ref name="$1"$2/>').
    replace(/<ref name=[“”"″’']([^“”"″’'\/]*?)[“”"″’']>/g, '<ref name="$1">').
    replace(/<ref name=([^"]*?)"( *)\/>/g, '<ref name="$1"$2/>').
    replace(/<ref name="([^"]*?)( *)\/>/g, '<ref name="$1"$2/>').
    replace(/<ref name=([^"]*?)">/g, '<ref name="$1">').
    replace(/<ref name="([^"]*?)>/g, '<ref name="$1">').
    replace(/<ref name=([^"]*?)" *\/>/g, '<ref name="$1" />').
    replace(/<ref name="([^"]*?)\/>/g, '<ref name="$1" />').
    
    replace(/<ref *[“”"″’'] *name *= *([^“”"″’'\/]*?)[“”"″’']>/g, '<ref name="$1">').
    replace(/<ref *[“”"″’']([^“”"″’'\/]*?)[“”"″’']>/g, '<ref name="$1">').
    
    replace(/<REF +NAME/gi, '<ref name').
    replace(/<REFERENCES/gi, '<references').
    replace(/<REF/gi, '<ref').
    replace(/\/REF>/gi, '/ref>').
    
    replace(/<ref name=["']{2}([^"']+?)["']{2}/g, '<ref name="$1"').
    
    replace(/<ref name *>/g, '<ref>').
    replace(/<ref name= *>/g, '<ref>').
    replace(/<ref name=" *">/g, '<ref>').
    replace(/name==/g, 'name=').
    replace(/name="=/g, 'name="').
    
    replace(/<ref group *= *\"注釈\">([^<>]+?)<\/ref>/gi, '{{Efn|$1}}').
    replace(/<ref group *= *\"注\">([^<>]+?)<\/ref>/gi, '{{Efn2|$1}}').
    replace(/<ref group *= *\"注釈\">/gi, '{{Efn|<!--終わりに注意-->').
    replace(/<ref group *= *\"注\">/gi, '{{Efn2|<!--終わりに注意-->').
    replace(/\{\{#tag:ref\|group *= *\"注釈\"\|/gi, '{{Efn|').
    replace(/\{\{#tag:ref\|group *= *\"注\"\|/gi, '{{Efn2|').
    replace(/\{\{#tag:ref\|(.*?)\|group *= *\"注釈\"\}\}/gi, '{{Efn|$1}}').
    replace(/\{\{#tag:ref\|(.*?)\|group *= *\"注\"\}\}/gi, '{{Efn2|$1}}').
    replace(/\{\{#tag:ref\|/g, '{{Efn|<!--注意-->').
    replace(/\{\{Refnest\|group *= *\"注釈\"\|/gi, '{{Efn|').
    replace(/\{\{Refnest\|group *= *\"注\"\|/gi, '{{Efn2|').
    replace(/\{\{efn/g, '{{Efn');
  }

  
  out = out.
  //タグミスの修正
  replace(/ref>>/g, 'ref>').
  replace(/<<(\/*)ref/g, '<$1ref').
  replace(/(<ref name="[^"]*"( \/)*>)>/g, '$1').
  replace(/("[^"]*"( \/)*>)>/g, '$1').
  replace(/\/>>/g, '/>').
  
  replace(/\(+UTC\)+/g, '(UTC)').
  
  //refタグの前後に句読点がついていたら後ろのみにする(\1は後方参照)
  replace(/([、。\.])(<ref[^>\/]*?>[^<]*?<\/ref>)(\1)/g, '$2$3').
  replace(/([、。\.])(<ref[^>\/]*?\/>)(\1)/g, '$2$3').
  
  //replace(/\.(<ref[^>\/]*?>[^<]*?<\/ref>)。/g, '$1。').
  replace(/([^a-zA-Z0-9\.])\.<ref/g, '$1<ref').
  
  replace(/<\/ref> *<ref/g, '</ref><ref').

  replace(/<sub ?\/>/g, '</sub>').
  replace(/<sup ?\/>/g, '</sup>').
  
  replace(/<(\/*)SUB>/g, '<$1sub>').
  replace(/<(\/*)SUP>/g, '<$1sup>').
  
  replace(/( | )+-( | )+/g, ' - ').
  
  //replace(/(-|–)(\d*?) ?(,|,)(\d*?)(-|–)/g, '$1$2, $4$5').
  ////replace(/(-|–)(\d*?),(\d*?)(-|–)/g, '$1$2, $3$4').
  
  replace(/<sup>(\d*)'''\n/g, '<sup>$1</sup>\'\'\'\n').
  replace(/<sup>(\d*)\n/g, '<sup>$1</sup>\n').
  replace(/<sup>r\n/g, '<sup>r</sup>\n').
  
  replace(/==[  ]*\n/g, '==\n').
  //括弧付きウィキリンク
  replace(/ \((.*?)\)([\|\]\#])/g, ' ($1)$2').
  replace(/\[\[([^\|\]]+) \(([^\)]+))([\|\]\#])/g, '[[$1 ($2)$3').
  replace(/\[\[([^\|\]]+) *(([^\))]+)\)([\|\]\#])/g, '[[$1 ($2)$3').
  replace(/\[\[([^\|\] #\_]+)\(([^\|\]]+)\)([\|\]\#])/g, '[[$1 ($2)$3').
  replace(/ \((I|II|III|IV|V)\)([\|\]\#])/g, '($1)$2').
  
  //括弧付きウィキリンクの括弧前の空白が多い場合
  replace(/  +\(([^\[\]]+)\)([\|\]\#])/g, ' ($1)$2').
  
  replace(/\[\[([^\|\]]+) \(([^\)\|]+)([\|\]\#])/g, '[[$1 ($2)$3').

  //二重リンクの解消
  replace(/\[\[([^\]]*?)\|\|([^\[]*?)\]\]/g, '[[$1|$2]]').
  //replace(/px\|\]\]/g, 'px||]]').
  replace(/\[\[(.*?)\|\]\]/g, '[[$1]]').
  replace(/\[\[\|(.*?)\]\]/g, '[[$1]]').

  replace(/&sup2;/g, '<sup>2</sup>').
  replace(/㎟/g, 'mm<sup>2</sup>').
  replace(/㎠/g, 'cm<sup>2</sup>').
  replace(/㎡/g, 'm<sup>2</sup>').
  replace(/㎢/g, 'km<sup>2</sup>').
  
  replace(/&sup3;/g, '<sup>3</sup>').
  replace(/㎣/g, 'mm<sup>3</sup>').
  replace(/㎤/g, 'cm<sup>3</sup>').
  replace(/㎥/g, 'm<sup>3</sup>').
  replace(/㎦/g, 'km<sup>3</sup>').
  
  //replace(/(mm|cm|km|m|mi|ft)²/g, '$1<sup>2</sup>').
  //replace(/(mm|cm|km|m|mi|ft)³/g, '$1<sup>3</sup>').
  
  replace(/\[\[1 E6 m[2²]\|/g, '[[平方キロメートル|').
  
  //replace(/\{\{Sup\|(.*?)\}\}/gi, '<sup>$1</sup>').

  replace(/<sup><small>(.*?)<\/small><\/sup>/g, '<sup>$1</sup>').

  replace(/<small[  ]*\/[  ]*>/g, '</small>').
  replace(/<center[  ]*\/[  ]*>/g, '</center>').
  
  replace(/- \[([^\[\]]+)\]\]/g, '- [[$1]]').
  
  replace(/htmll/g, 'html').

  replace(/\[\[(https?:\/\/[^\]]+)\]/g, '[$1]').
  replace(/\[(https?:\/\/[^\]]+)\]\]/g, '[$1]').
  
  //replace(/\[https?:\/\/ja\.wikipedia\.org\/wiki\/(.*?) (.*?)\]/g, '[[$2]]').
  //replace(/\[https?:\/\/ja\.wikipedia\.org\/wiki\/(.*?)\]/g, '[[$1]]').
  replace(/\[https?:\/\/ja\.(m\.)*wikipedia\.org\/wiki\/(.*?)[  ](.*?)\]/g, function () { return("[[" + decodeURIComponent(arguments[2]) + "|" + arguments[3] + "]]"); } ).
  replace(/\[https?:\/\/ja\.(m\.)*wikipedia\.org\/wiki\/(.*?)\]/g, function () { return("[[" + decodeURIComponent(arguments[2]) + "]]"); } ).
  
  replace(/\[https?:\/\/([a-z]*?)\.wikipedia\.org\/wiki\/(.*?) (.*?)\]/g, '[[:$1:$2|$3]]').
  replace(/\[https?:\/\/([a-z]*?)\.wikipedia\.org\/wiki\/(.*?)\]/g, '[[:$1:$2|$2]]').

  replace(/\[\[(Category|カテゴリ) *[\::;] */gi, '[[$1:').
  replace(/<BR/gi, '<br').
  replace(/<br +>/gi, '<br />').
  replace(/<br ?\/ +>/gi, '<br />').
  replace(/<\/ ?br ?>/gi, '<br />').

  replace(/<br[  ]+\/>/gi, '<br />').
  
  replace(/ +<br \/> */gi, '<br />').
  replace(/<br\\>/g, '<br />').
  replace(/<\\br>/g, '<br />').

  replace(/[  ]+<br/gi, '<br').
  //replace(/<br *\/> /gi, '<br />').
  
  replace(/<\!-- *\[\[en:\]\] *-->\n/gi, '').
  replace(/\[\[([:;])+en([:;])+/gi, '[[:en:').
  replace(/ *[(\(]*\[\[:en:\|en\]\][\))]* */gi, '').
  replace(/ *[(\(]*\[\[:en:\|\]\][\))]* */gi, '').
  replace(/\[\[(:en:[^\|]*?)\|:en:/gi, '[[$1|').
  replace(/\[\[:en\|/gi, '[[:en:').
  replace(/\[\[:en:en:/gi, '[[:en:').
  replace(/\[\[:*w:en:/gi, '[[:en:').
  replace(/\[\[:en:\|英語版ウィキペディア\]\]/gi, '[[英語版ウィキペディア]]').
  replace(/\[\[:en:\|([^\]\|]+)\|([^\]\|]+)\]\]/gi, '[[:en:$1|$2]]').
  replace(/\[\[w:\|([^\]\|]+)\|([^\]\|]+)\]\]/gi, '[[w:$1|$2]]').
  replace(/\[\[:en:\|([^\]]+)\]\]/gi, '[[:en:$1|$1]]').
  replace(/\[\[w:\|([^\]]+)\]\]/gi, '[[w:$1|$1]]').
  replace(/\[\[:en:''([^\]\|]+)''\|([^\]\|]+)\]\]/gi, '[[:en:$1|$2]]').
  replace(/\[\[:en:([^\|]+)\|\[:en\]\]\]/gi, '([[:en:$1|en]])').
  replace(/\[\[:En:/g, '[[:en:');

  // 「Reflistを修正」にチェックがついていたら処理を行なう
  if((styleRefList && styleRefList.checked) || out.match(/\{\{Reflist/i)) {
    out = out.
    replace(/<references *\/>/gi, '{{Reflist}}').
    replace(/<references group="(.*)" *\/>/gi, '{{Reflist|group="$1"}}');
  }

  out = out.
  replace(/(\{\{脚注ヘルプ\}\}) /g, '$1').
  replace(/(\{\{脚注ヘルプ\}\})([^\n])/g, '$1\n$2').
  replace(/(\{\{Reflist[^}]*?\}\})(\{\{脚注ヘルプ\}\})/gi, '$2\n$1').
  
  replace(/; *(脚注|注釈|出典)\n/gi, '=== $1 ===\n').
  replace(/: *\{\{Reflist([^\{\}]*)\}\}/gi, '{{Reflist$1}}').
  
  replace(/\{\{Reflist\|\}\}/gi, '{{Reflist}}').
  replace(/\{\{reflist/g, '{{Reflist').
  replace(/\{\{(Refs|Refls|脚注リスト)/gi, '{{Reflist').
  replace(/\{\{Reflist\|group=([^"\}]*)\|(\d+)\}\}/gi, '{{Reflist|group="$1"|$2}}').
  replace(/\{\{Reflist\|group=([^"\}]*)\}\}/gi, '{{Reflist|group="$1"}}').
  replace(/\{\{Reflist *\| */g, '{{Reflist|').
  replace(/\{\{Reflist\|group="注釈"\}\}/g, '{{Notelist}}').
  replace(/\{\{Reflist\|group="注"\}\}/g, '{{Notelist2}}').
  replace(/\{\{notelist/g, '{{Notelist').

  replace(/([  ]+)ISBN/g, ' ISBN').
  replace(/([^(\(\{ ※、。\|!=]::)ISBN/g, '$1 ISBN').
  replace(/([^\/])ISBN *([0-9])/g, '$1ISBN $2').
  replace(/\{\{ISBN 2\|/g, '{{ISBN2|').
  replace(/\|( *)ISBN 2( *)=/g, '|$1ISBN2$2=').
  
  replace(/\{\{infobox/g, '{{Infobox').

  replace(/\n([、。])/g, '$1');

  // 「URLスキームを修正」にチェックがついていたら処理を行なう
  if(styleHttps && styleHttps.checked) {
    out = out.
    replace(/([^\/])http:\/\//g, '$1https://');
  }

  // 「箇条書き時の空白を統一」にチェックがついていたら処理を行なう
  if(styleList && styleList.checked) {
    // リスト後の空白有無の揺れ
    if(out.match(/\n\*[^ ]/)) {
      out = out.replace(/\n([\*\:\;#]+)([^\*\:\;# ])/g, '\n$1 $2');
    }
  }

  // 「見出しの空白を修正」にチェックがついていたら処理を行なう
  if(styleHead && styleHead.checked) {
    out = out.
    replace(/(==+)([^=]+)(==+)\n/g, '$1 $2 $3\n').
    replace(/\n(==+)[  ][  ]+/g, '\n$1 ').
    replace(/[  ][  ]+(==+)\n/g, ' $1\n');
  }

  out = out.
  replace(/作業用<\/ref>/, '').
  replace(/<ref>作業用/, '');
  
  
  // </ref>が存在して<references />がなかったら、脚注項目追加
  if(out.match(/<\/ref>/)) {
    if(!out.match(/<references.*\/>/) && !out.match(/\{\{(Reflist|reflist)/)) {
      if(out.match(/== *脚注 *==/)) {
        out = out.replace(/== *脚注 *==\n/g, '== 脚注 ==\n{{Reflist}}\n');
      } else if(out.match(/== *関連項目 *==/)) {
        out = out.replace(/== *関連項目 *==\n/g, '== 脚注 ==\n{{Reflist}}\n\n== 関連項目 ==\n');
      } else if(out.match(/== *外部リンク *==/)) {
        out = out.replace(/== *外部リンク *==\n/g, '== 脚注 ==\n{{Reflist}}\n\n== 外部リンク ==\n');
      } else if(out.match(/\{\{(DEFAULTSORT|デフォルトソート)(.*?)\}\}/)) {
        out = out.replace(/\{\{(DEFAULTSORT|デフォルトソート)(.*?)\}\}\n/g, '== 脚注 ==\n{{Reflist}}\n\n{{$1$2}}\n');
      } else {
        out = out + '\n\n== 脚注 ==\n{{Reflist}}\n';
      }
    }
  }
  
  edit.value = out + "\n";
  return true;
}
// ここまでメイン

$(function() {
  var f = document.getElementById("editform");
  if(!f) return;
  
  var html = '';
  //if($A(jastyle_autostyle_namespaces).include(wgCanonicalNamespace)) {
  //  Event.observe('editform', 'submit', jastyle);
  //}
  
  if (f.addEventListener) {
    f.addEventListener("submit", jastyle, false);
  } else if (f.attachEvent) {
    f.attachEvent("onsubmit", jastyle);
  }
  
  // チェックボックス
  html += '<label for="basicStyle"><input type="checkbox" id="basicStyle" value="1" />一般的な書式修正</label> ';
  html += '<br>';
  // 「全角文字を修正」チェックボックス
  html += '<label for="zenhanStyle"><input type="checkbox" id="zenhanStyle" value="1" />全角文字を修正</label> ';
  // 「英字引用符を修正」チェックボックス
  html += '<label for="quotStyle"><input type="checkbox" id="quotStyle" value="1" />英字引用符を修正</label> ';
  // 「ローマ数字を修正」チェックボックス
  html += '<label for="romanStyle"><input type="checkbox" id="romanStyle" value="1" />ローマ数字を修正</label> ';
  // 「日本語表記を簡単化」チェックボックス
  html += '<label for="wordStyle"><input type="checkbox" id="wordStyle" value="1" />日本語表記を簡単化</label> ';
  // 「半角仮名を修正」チェックボックス
  html += '<label for="hankanaStyle"><input type="checkbox" id="hankanaStyle" value="1" />半角仮名を修正</label> ';
  html += '<br>';
  // 「脚注を修正 (全般)」チェックボックス
  html += '<label for="refStyle"><input type="checkbox" id="refStyle" value="1" />脚注を修正 (全般)</label> ';
  // 「脚注を修正 (group)」チェックボックス
  html += '<label for="refGroupStyle"><input type="checkbox" id="refGroupStyle" value="1" />脚注を修正 (group)</label> ';
  // 「脚注を修正 (name)」チェックボックス
  html += '<label for="refExStyle"><input type="checkbox" id="refExStyle" value="1" />脚注を修正 (name)</label> ';
  // 「Reflistを修正」チェックボックス
  html += '<label for="refListStyle"><input type="checkbox" id="refListStyle" value="1" />Reflistを修正</label> ';
  html += '<br>';
  // 「URLスキームを修正」チェックボックス
  html += '<label for="httpsStyle"><input type="checkbox" id="httpsStyle" value="1" />URLスキームを修正</label> ';
  // 「箇条書き時の空白を統一」チェックボックス
  html += '<label for="listStyle"><input type="checkbox" id="listStyle" value="1" />箇条書き時の空白を統一</label> ';
  html += '<br>';
  // 「見出しの空白を修正」チェックボックス
  html += '<label for="headStyle"><input type="checkbox" id="headStyle" value="1" />見出しの空白を修正</label> ';
  // 「debug」チェックボックス
  html += '<label for="debugStyle"><input type="checkbox" id="debugStyle" value="1" />debug</label> ';
  
  // 実行ボタン
  html += '<button type="button" style="font-size:xx-small;" onclick="jastyle()">style</button>';
  
  var sl = document.getElementById("wpSummaryLabel");
  
  var p = document.createElement('p');
  p.innerHTML = html;
  sl.parentNode.insertBefore(p, sl);
});

// 「全半角チェック」にチェックがついていたら処理を行なう
function replaceZenToHan(str) {
  // 全角英数・記号
  str = str.
    replace(/1/g, '1').replace(/2/g, '2').replace(/3/g, '3').replace(/4/g, '4').replace(/5/g, '5').
    replace(/6/g, '6').replace(/7/g, '7').replace(/8/g, '8').replace(/9/g, '9').replace(/0/g, '0').
    replace(/A/g, 'A').replace(/B/g, 'B').replace(/C/g, 'C').replace(/D/g, 'D').replace(/E/g, 'E').replace(/F/g, 'F').
    replace(/G/g, 'G').replace(/H/g, 'H').replace(/I/g, 'I').replace(/J/g, 'J').replace(/K/g, 'K').replace(/L/g, 'L').
    replace(/M/g, 'M').replace(/N/g, 'N').replace(/O/g, 'O').replace(/P/g, 'P').replace(/Q/g, 'Q').replace(/R/g, 'R').
    replace(/S/g, 'S').replace(/T/g, 'T').replace(/U/g, 'U').replace(/V/g, 'V').replace(/W/g, 'W').replace(/X/g, 'X').
    replace(/Y/g, 'Y').replace(/Z/g, 'Z').
    replace(/a/g, 'a').replace(/b/g, 'b').replace(/c/g, 'c').replace(/d/g, 'd').replace(/e/g, 'e').replace(/f/g, 'f').
    replace(/g/g, 'g').replace(/h/g, 'h').replace(/i/g, 'i').replace(/j/g, 'j').replace(/k/g, 'k').replace(/l/g, 'l').
    replace(/m/g, 'm').replace(/n/g, 'n').replace(/o/g, 'o').replace(/p/g, 'p').replace(/q/g, 'q').replace(/r/g, 'r').
    replace(/s/g, 's').replace(/t/g, 't').replace(/u/g, 'u').replace(/v/g, 'v').replace(/w/g, 'w').replace(/x/g, 'x').
    replace(/y/g, 'y').replace(/z/g, 'z').
    replace(/「/g, '「').replace(/」/g, '」').replace(/ *・ */g, '・').replace(/ *· */g, '・').replace(/ *• */g, '・');
  return str;
}