注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。
?_=1
来访问最新页面。https://zh.moegirl.org.cn/User:%E6%9D%B1%E6%9D%B1%E5%90%9B/js/replace.js?_=1
/* 这个js文件将载入一个查找与替换的工具。 萌百本身有查找与替换工具的,不知为何莫名其妙地消失了,于是就自己造了一个。 注意:开启段落模式后,下次匹配的范围将被限制在最近一次选中的代码范围中。 在替换栏中可以使用“_@br_”来指代换行,无论是否为正则模式,如果你要替换的内容里就有这个字符串...你到底写是什么内容啊,会写这个 若呼出界面的按钮没有加载,也可以使用ctrl + shift + 空格呼出或关闭 ,如果还不行请保存编辑内容并刷新 */ $(function(){ if(/action=(edit|submit)/.test(location.href)){ setTimeout(function(){ var widgetHTML = '\ <div id="widget-RegExp" style="width:400px; background:#FAFCFE; border:1px #666 solid; border-radius:5px; font-size:80%; overflow:hidden; padding:5px; position:fixed; top:50%; left:50%; -webkit-user-select:none; -moz-user-select:none; -o-user-select:none; user-select:none; display:none; z-index:10000;">\ <div id="widgetTop" style="background:linear-gradient(white,#E8F2F8); padding:10px; cursor:move;">查找与替换<div id="widget-RegExpHide" style="float:right; font-size:26px; font-weight:bold; margin-top:-8px; -webkit-user-select:none; -moz-user-select:none; -o-user-select:none; user-select:none; cursor:pointer">×</div></div>\ <div style="height:150px; border-radius:3px; padding:10px;">\ <p>查找:<input id="widgetLookup" style="width:300px; height:25px; text-indent:3px; border-radius:3px;"></p>\ <p>替换:<input id="widgetReplace" style="width:300px; height:25px; text-indent:3px; border-radius:3px;"></p>\ <p id="widget-RegExpMessage"> </p>\ <p>正则模式:<input type="checkbox" id="widget-RegExpFlag" value="reg" style="width:16px; height:16px; position:relative; top:3px; margin-right:10px;">范围模式:<input type="checkbox" id="widget-RegExpSec" value="set" style="width:16px; height:16px; position:relative; top:3px;"></p>\ <p><input id="widget-RegExpRevoke" type="button" value="撤销" style="float:right; width:50px; height:25px; background:linear-gradient(white,#E8F2F8); border-radius:3px; border-radius:3px; -webkit-user-select:none; -moz-user-select:none; -o-user-select:none; user-select:none; margin:0 5px;"></p>\ <p><input id="widget-RegExpAction" type="button" value="替换" style="float:right; width:50px; height:25px; background:linear-gradient(white,#E8F2F8); border-radius:3px; border-radius:3px; -webkit-user-select:none; -moz-user-select:none; -o-user-select:none; user-select:none; margin:0 5px;"></p>\ </div>\ </div>' var shade = '<div id="widget-RegExp-shade" style="width:100%; height:100%; position:fixed; top:0; left:0; z-index:9999;"></div>' $('body').append($(widgetHTML)) $('#wikiEditor-ui-toolbar .tabs').append($('<span id="widget-RegExpShow" class="tab"><a href="#" role="button" aria-pressed="false">查找与替换</a></span>')) function windowReset(){ $('#widget-RegExp').css({ top : $(window).outerHeight() / 2 - $('#widget-RegExp').outerHeight() / 2 + 'px', left : $(window).outerWidth() / 2 - $('#widget-RegExp').outerWidth() / 2 + 'px' }) } windowReset() var move = false var distanceX = 0 var distanceY = 0 $('#widgetTop').mousedown(function(e){ move = true this.setCapture && this.setCapture() var location = $('#widget-RegExp').offset() distanceX = e.clientX - location.left; distanceY = e.clientY - location.top; $('body').append(shade) }) $(window).mousemove(function(e){ if(move){ $('#widget-RegExp').offset({ left : e.clientX - distanceX, top : e.clientY - distanceY }) } }).mouseup(function(){ move = false this.releaseCapture && this.releaseCapture() $('#widget-RegExp-shade').remove() }) function windowSwitch(){ if($('#widget-RegExp:hidden').length){ $('#widget-RegExp').show() windowReset() }else{ $('#widget-RegExp').hide() } } $('#widget-RegExpShow').click(function(){ windowSwitch() return false }) $('#widget-RegExpHide').click(function(){ windowSwitch() }) $(window).keydown(function(e){ if(e.ctrlKey && e.keyCode == 32){ e.preventDefault() windowSwitch() } }) $('#widget-RegExpAction').click(function(){ var pattren = $('#widgetLookup').val() var replace = $('#widgetReplace').val() var regFlag = $('#widget-RegExpFlag:checked').length var secFlag = $('#widget-RegExpSec:checked').length var wikiCode = $('#wpTextbox1').val() var editBox = $('#wpTextbox1')[0] var start = editBox.selectionStart var end = editBox.selectionEnd var paraWikiCode = editBox.value.substring(start, end) if(secFlag && paraWikiCode && (paraWikiCode != wikiCode)){ var paraReplace = true } if(pattren){ try{ if(! regFlag){ var pattren = pattren.replace(/([\\\(\)\[\]\{\}\+\.\*\^\$\!\?\|])/g,'\\$1') } var pattren = new RegExp(pattren,'gm') }catch(e){ $('#widget-RegExpMessage').text('表达式有误!') return false } if(paraReplace){ //选中某处后再执行替换,只操作选中的文字 var workedWikiCode = paraWikiCode.replace(pattren,replace) var left = wikiCode.substring(0, start) var right = wikiCode.substring(end, wikiCode.length) workedWikiCode = left + workedWikiCode + right $('#wpTextbox1').val(workedWikiCode) }else{ $('#wpTextbox1').val(wikiCode.replace(pattren,replace)) } var br = '\n' $('#wpTextbox1').val($('#wpTextbox1').val().replace(/_@br_/g,br)) //在替换栏中使用“_@br_”指代换行 var prompt = paraReplace ? '<strong>范围匹配:</strong>' : '' if($('#wpTextbox1').val() == wikiCode){ $('#widget-RegExpMessage').html(prompt + '匹配结果为空!') }else{ $('#widget-RegExpRevoke').one('click',function(){ $('#wpTextbox1').val(wikiCode) if(paraReplace){ editBox.selectionStart = start editBox.selectionEnd = end } }) $('#widget-RegExpMessage').html(prompt + '已完成替换!') } }else{ $('#widget-RegExpMessage').text('表达式不能为空!') } }) }, 1000) } })