https://de.wikipedia.org/w/index.php?action=history&feed=atom&title=User%3ATopbanana%2FregexReplace.js
Benutzer:Topbanana/regexReplace.js - Versionsgeschichte
2025-07-29T20:02:48Z
Versionsgeschichte dieser Seite in Wikipedia
MediaWiki 1.45.0-wmf.11
https://de.wikipedia.org/w/index.php?title=Benutzer:Topbanana/regexReplace.js&diff=93650030&oldid=prev
Topbanana: AZ: Die Seite wurde neu angelegt: /* This is a slightly modified copy of User:Gerbrant/edit/regexReplace.js as I couldn't make the …
2011-09-14T16:57:31Z
<p><a href="/wiki/Hilfe:Zusammenfassung_und_Quellen#Auto-Zusammenfassung" title="Hilfe:Zusammenfassung und Quellen">AZ</a>: Die Seite wurde neu angelegt: /* This is a slightly modified copy of <a href="/w/index.php?title=Benutzer:Gerbrant/edit/regexReplace.js&action=edit&redlink=1" class="new" title="Benutzer:Gerbrant/edit/regexReplace.js (Seite nicht vorhanden)">User:Gerbrant/edit/regexReplace.js</a> as I couldn't make the …</p>
<p><b>Neue Seite</b></p><div>/*<br />
This is a slightly modified copy of [[User:Gerbrant/edit/regexReplace.js]] as I couldn't<br />
make the original do what I wanted.<br />
*/<br />
<br />
<br />
document.write("<style>span.GerbrantEditRegexReplaceHit{font-weight:bold;background:lightsteelblue}span.GerbrantEditRegexReplaceHitOff{font-weight:bold;background:mistyrose}span.GerbrantEditRegexReplaceMaskFailed{font-weight:normal;color:red}</style>");<br />
<br />
function createRegexControls()<br />
{<br />
var lang, textBox = document.getElementById("wpTextbox1");<br />
if(!textBox) return;<br />
<br />
str = {<br />
finished: "Finished; $1 items were replaced.",<br />
finished2: "Finished; $1 out of $2 items were replaced.",<br />
notFound: "Requested text was not found.",<br />
replace: "Find",<br />
replaceSel: "Replace",<br />
errorNoCheckBox: "Cannot find the corresponding checkbox.",<br />
textHasChanged: "Warning! The text has changed after 'Replace...' was clicked. These changes will be lost during replacement. Do you want to continue?",<br />
looksLikeFunction: "Warning! The text you intend to use to replace the matched text looks like a JavaScript function. Are you really sure you want to use this as replacement text, and not as a replacement function?",<br />
maskFailed: "Mask failed: $1",<br />
useRepFun: "< function >"<br />
};<br />
<br />
<br />
var mask, regex, text, minFrag = 30, minDel = 10, repFun;<br />
<br />
var results = document.createElement("DIV");<br />
var tbRegex = document.createElement("INPUT");<br />
tbRegex.id = "tbRegex_SearchTextBox";<br />
<br />
var hl = document.createElement("INPUT");<br />
hl.type = "checkbox";<br />
<br />
var rep = document.createElement("DIV");<br />
rep.style.display = "none";<br />
rep.style.whiteSpace = "nowrap";<br />
<br />
function returnTrue(){ return true; }<br />
<br />
function evalError(e){ alert(e.message); }<br />
<br />
function getMaskAndRegex(t)<br />
{<br />
var p = t.indexOf("**"), r;<br />
if(p < 0) return [returnTrue, t];<br />
else<br />
{<br />
try{ eval("r=" + t.slice(0, p)) }<br />
catch(x){ evalError(x); r = returnTrue; }<br />
return [r, t.slice(p + 2)];<br />
}<br />
}<br />
<br />
function findMatches()<br />
{<br />
var m = [], r = [], i = 0;<br />
text = textBox.value;<br />
<br />
var t = text.replace(regex, function(a)<br />
{<br />
try<br />
{<br />
if(!mask.apply(null, arguments)) return a;<br />
}<br />
catch(e)<br />
{<br />
m.push(a + ' \u0001span class="GerbrantEditRegexReplaceMaskFailed">(' + str.maskFailed.replace("$1", e.message) + ')\u0001/span>');<br />
return "\u0001";<br />
}<br />
m.push(a);<br />
return "\u0001";<br />
}).split("\u0001");<br />
<br />
if(m.length == 0)<br />
{<br />
results.innerHTML = str.notFound;<br />
return;<br />
}<br />
<br />
if(t[0].length > minFrag + minDel)<br />
{<br />
r.push(" \u2026 ");<br />
r.push(t[0].slice(-minFrag));<br />
}<br />
else<br />
r.push(t[0]);<br />
while(true)<br />
{<br />
r.push('\u0001span class="GerbrantEditRegexReplaceHit">\u0001input type="checkbox" checked id="Gerbrant-errCB');<br />
r.push(i);<br />
r.push('" onclick="Gerbrant.edit.regexReplace.toggleCB(this)">');<br />
r.push(m[i]);<br />
r.push('\u0001/span>');<br />
if(++i >= m.length) break;<br />
if(t[i].length > 2 * minFrag + minDel)<br />
{<br />
r.push(t[i].slice(0, minFrag));<br />
r.push(" \u2026 ");<br />
r.push(t[i].slice(-minFrag));<br />
}<br />
else<br />
r.push(t[i]);<br />
}<br />
if(t[i].length > minFrag + minDel)<br />
{<br />
r.push(t[i].slice(0, minFrag));<br />
r.push(" \u2026 ");<br />
}<br />
else<br />
r.push(t[i]);<br />
<br />
rep.style.display = "";<br />
onResize();<br />
results.innerHTML = r.join("").replace(<br />
/&/g, "&amp;").replace(<br />
/</g, "&lt;").replace(<br />
/\u0001/g, "<").replace(<br />
/\n[ \t]/g, "\n&nbsp;").replace(<br />
/[ \t](?=[ \t])/g, "&nbsp;").replace(<br />
/\n/g, "<br>");<br />
}<br />
<br />
function getRegexAndFind()<br />
{<br />
mask = getMaskAndRegex(tbRegex.value);<br />
regex = new RegExp(mask[1], hl.checked ? "g" : "ig");<br />
mask = mask[0];<br />
findMatches();<br />
}<br />
<br />
var ok = document.createElement("INPUT");<br />
ok.type = "button";<br />
ok.value = str.replace;<br />
ok.onclick = getRegexAndFind;<br />
ok.id = "tbRegex_FindButton";<br />
<br />
var div = document.createElement("DIV");<br />
div.style.whiteSpace = "nowrap";<br />
div.appendChild(tbRegex);<br />
div.appendChild(hl);<br />
div.appendChild(ok);<br />
<br />
var tbReplace = document.createElement("INPUT");<br />
tbReplace.id = "tbRegex_ReplaceTextBox";<br />
<br />
<br />
var chkJS = document.createElement("INPUT");<br />
chkJS.type = "checkbox";<br />
<br />
function doReplace()<br />
{<br />
var rjs = chkJS.checked, i = 0, j = 0, r, nt, ohno = false;<br />
if(text != textBox.value) if(!confirm(str.textHasChanged)) return;<br />
r = tbReplace.value;<br />
if(rjs)<br />
if(r == str.useRepFun) r = repFun;<br />
else try{ eval("r=" + r); }<br />
catch(x){ evalError(x); return; }<br />
else if(r == str.useRepFun || /^\s*function\s*\([0-9A-Za-z$_, ]*\)\s*\{/.test(r)) if(!confirm(str.looksLikeFunction)) return;<br />
try<br />
{<br />
nt = text.replace(regex, function(a)<br />
{<br />
try{ if(!mask.apply(null, arguments)) return a; }catch(e){/* mask failed; assume true */}<br />
var c = document.getElementById("Gerbrant-errCB" + i++);<br />
if(c)<br />
if(c.checked)<br />
{<br />
j++;<br />
if(rjs)<br />
return r.apply(null, arguments);<br />
else return r;<br />
}<br />
else return a;<br />
else ohno = true;<br />
});<br />
}<br />
catch(e)<br />
{<br />
alert(e.message);<br />
return;<br />
}<br />
if(ohno)<br />
{<br />
alert(str.errorNoCheckBox);<br />
return;<br />
}<br />
if(j < i) results.innerHTML = str.finished2.replace("$1", j).replace("$2", i);<br />
else results.innerHTML = str.finished.replace("$1", j);<br />
rep.style.display = "none";<br />
textBox.value = nt;<br />
}<br />
<br />
var finish = document.createElement("INPUT");<br />
finish.type = "button";<br />
finish.value = str.replaceSel;<br />
finish.onclick = doReplace;<br />
<br />
rep.appendChild(tbReplace);<br />
rep.appendChild(chkJS);<br />
rep.appendChild(finish);<br />
<br />
textBox.parentNode.insertBefore(div, textBox);<br />
textBox.parentNode.insertBefore(results, textBox);<br />
textBox.parentNode.insertBefore(rep, textBox);<br />
<br />
function onResize()<br />
{<br />
finish.style.height = ok.style.height = tbRegex.offsetHeight + "px";<br />
tbRegex.style.width = textBox.offsetWidth - ok.offsetWidth - hl.offsetWidth - 14 + "px";<br />
tbReplace.style.width = textBox.offsetWidth - finish.offsetWidth - chkJS.offsetWidth - 14 + "px";<br />
}<br />
onResize();<br />
hookEvent("resize", onResize);<br />
}</div>
Topbanana