<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=JavaScript_DHTML%2FMochkit%2FRegExp</id>
		<title>JavaScript DHTML/Mochkit/RegExp - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wbex.ru/index.php?action=history&amp;feed=atom&amp;title=JavaScript_DHTML%2FMochkit%2FRegExp"/>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_DHTML/Mochkit/RegExp&amp;action=history"/>
		<updated>2026-04-04T15:31:00Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wbex.ru/index.php?title=JavaScript_DHTML/Mochkit/RegExp&amp;diff=3234&amp;oldid=prev</id>
		<title> в 10:00, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_DHTML/Mochkit/RegExp&amp;diff=3234&amp;oldid=prev"/>
				<updated>2010-05-26T10:00:07Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 10:00, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://wbex.ru/index.php?title=JavaScript_DHTML/Mochkit/RegExp&amp;diff=3235&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://wbex.ru/index.php?title=JavaScript_DHTML/Mochkit/RegExp&amp;diff=3235&amp;oldid=prev"/>
				<updated>2010-05-26T07:25:22Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==MochiRegExp - JavaScript Regular Expression (RegExp) Explorer==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
MochiKit is dual-licensed software.  It is available under the terms of the&lt;br /&gt;
MIT License, or the Academic Free License version 2.1.  The full text of&lt;br /&gt;
each license is included below.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!-- Code revised from MochiKit demo code --&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;title&amp;gt;MochiRegExp - JavaScript Regular Expression (RegExp) Explorer&amp;lt;/title&amp;gt;&lt;br /&gt;
        &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
h1 {&lt;br /&gt;
    font-size: 2em;&lt;br /&gt;
    color: #4B4545;&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
table.datagrid {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
}&lt;br /&gt;
table.datagrid thead th { &lt;br /&gt;
    text-align: left;&lt;br /&gt;
    background-color: #4B4545;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
    background-position: right center;&lt;br /&gt;
    color: white;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    padding: .3em .7em;&lt;br /&gt;
    font-size: .9em;&lt;br /&gt;
    padding-right: 5px;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
    background-position: 95% right;&lt;br /&gt;
}&lt;br /&gt;
table.datagrid thead th a {&lt;br /&gt;
    color: white;&lt;br /&gt;
    text-decoration: none;&lt;br /&gt;
    font-size: 1.0em;&lt;br /&gt;
    background-repeat: no-repeat;&lt;br /&gt;
    background-position: center right;&lt;br /&gt;
    padding-right: 15px;&lt;br /&gt;
}&lt;br /&gt;
table.datagrid tbody th {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
table.datagrid tbody td, table.datagrid tbody th {&lt;br /&gt;
    text-align: left;&lt;br /&gt;
    padding: .3em .7em;&lt;br /&gt;
    border-bottom: 1px solid #eee;&lt;br /&gt;
}&lt;br /&gt;
table.datagrid tbody tr.alternate td, table.datagrid tbody tr.alternate th {&lt;br /&gt;
    background-color: #f1f1f1;&lt;br /&gt;
}&lt;br /&gt;
table.datagrid tfoot td, table.datagrid tfoot th { &lt;br /&gt;
    background-color: #FFFEE3;&lt;br /&gt;
    color: #4B4545;&lt;br /&gt;
    padding: .5em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    border-top: 2px solid #4B4545;&lt;br /&gt;
}&lt;br /&gt;
table.datagrid tfoot th { text-align: left; }&lt;br /&gt;
table.datagrid tfoot td {  }&lt;br /&gt;
.invisible { display: none; }&lt;br /&gt;
input.textbox, textarea { border: 1px solid #CCCCCC; font-size: .95em; padding: 2px 4px; margin-top: .3em; }&lt;br /&gt;
input.textbox:focus, textarea:focus { background-color: #FFFEE3; }&lt;br /&gt;
.highlight { font-weight: bold; };&lt;br /&gt;
form { margin: 0; padding: 0; }&lt;br /&gt;
fieldset { border: none; margin: 0; padding: 0; }&lt;br /&gt;
fieldset label { font-weight: bold; color: #4B4545; }&lt;br /&gt;
fieldset .field { margin-bottom: 1em; }&lt;br /&gt;
.error { color: red; }&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;/style&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;../../lib/MochiKit/MochiKit.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
    MochiRegExp: JavaScript Regular Expression Explorer&lt;br /&gt;
*/&lt;br /&gt;
RegExpManager = function () {&lt;br /&gt;
    this.timer = null;&lt;br /&gt;
    bindMethods(this);&lt;br /&gt;
};&lt;br /&gt;
RegExpManager.prototype.initialize = function () {&lt;br /&gt;
    /*&lt;br /&gt;
       Fill in the event handlers and sample text, and do the initial update&lt;br /&gt;
       The reason we do the sample text here is so that &amp;quot;clear&amp;quot; really does&lt;br /&gt;
       clear the fields.&lt;br /&gt;
    */&lt;br /&gt;
    setNodeAttribute(&amp;quot;inp_text&amp;quot;, &amp;quot;value&amp;quot;, &amp;quot;matched with your pattern&amp;quot;);&lt;br /&gt;
    connect(&amp;quot;inp_text&amp;quot;, &amp;quot;onkeyup&amp;quot;, this, &amp;quot;updateSoon&amp;quot;);&lt;br /&gt;
    connect(&amp;quot;inp_text&amp;quot;, &amp;quot;onchange&amp;quot;, this, &amp;quot;update&amp;quot;);&lt;br /&gt;
    setNodeAttribute(&amp;quot;inp_regexp&amp;quot;, &amp;quot;value&amp;quot;, &amp;quot;/(pattern)/&amp;quot;);&lt;br /&gt;
    connect(&amp;quot;inp_regexp&amp;quot;, &amp;quot;onkeyup&amp;quot;, this, &amp;quot;updateSoon&amp;quot;);&lt;br /&gt;
    connect(&amp;quot;inp_regexp&amp;quot;, &amp;quot;onchange&amp;quot;, this, &amp;quot;update&amp;quot;);&lt;br /&gt;
    connect(&amp;quot;regexp_form&amp;quot;, &amp;quot;onsubmit&amp;quot;, this, &amp;quot;submit&amp;quot;);&lt;br /&gt;
    this.update();&lt;br /&gt;
};&lt;br /&gt;
RegExpManager.prototype.updateSoon = function () {&lt;br /&gt;
    /*&lt;br /&gt;
        If the user stops typing for half a second, do one update.&lt;br /&gt;
    */&lt;br /&gt;
    this.cancelTimer();&lt;br /&gt;
    this.timer = callLater(0.5, this.update);&lt;br /&gt;
};&lt;br /&gt;
RegExpManager.prototype.cancelTimer = function () {&lt;br /&gt;
    /*&lt;br /&gt;
        Cancel the timer that waits for the user to idle for half a second.&lt;br /&gt;
    */&lt;br /&gt;
    if (this.timer) {&lt;br /&gt;
        this.timer.cancel();&lt;br /&gt;
    }&lt;br /&gt;
    this.timer = null;&lt;br /&gt;
};&lt;br /&gt;
RegExpManager.prototype.update = function () {&lt;br /&gt;
    /*&lt;br /&gt;
        Cancel the update timer and actually do an update of the&lt;br /&gt;
        RegExp&lt;br /&gt;
    */&lt;br /&gt;
    this.cancelTimer();&lt;br /&gt;
    var re;&lt;br /&gt;
    try {&lt;br /&gt;
        // Evaluate the regexp&lt;br /&gt;
        re = eval(&amp;quot;(&amp;quot; + getElement(&amp;quot;inp_regexp&amp;quot;).value + &amp;quot;)&amp;quot;);&lt;br /&gt;
    } catch (e) {&lt;br /&gt;
        // If invalid, color it red and stop&lt;br /&gt;
        addElementClass(&amp;quot;lab_regexp&amp;quot;, &amp;quot;error&amp;quot;);&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
    // Make sure that it&amp;quot;s not red&lt;br /&gt;
    removeElementClass(&amp;quot;lab_regexp&amp;quot;, &amp;quot;error&amp;quot;);&lt;br /&gt;
    // replace the contents of the tbody&lt;br /&gt;
    var match = getElement(&amp;quot;inp_text&amp;quot;).value.match(re);&lt;br /&gt;
    replaceChildNodes(&amp;quot;result_body&amp;quot;, this.getRows(match));&lt;br /&gt;
};&lt;br /&gt;
RegExpManager.prototype.getRows = function (match) {&lt;br /&gt;
    /*&lt;br /&gt;
        Return rows for the tbody given a match object&lt;br /&gt;
    */&lt;br /&gt;
    if (!match) {&lt;br /&gt;
        // No match, bail with a no match row&lt;br /&gt;
        return TR(null, TD({&amp;quot;colspan&amp;quot;: &amp;quot;3&amp;quot;}, &amp;quot;No match!&amp;quot;));&lt;br /&gt;
    }&lt;br /&gt;
    var isAlternate = true;&lt;br /&gt;
    var res = [];&lt;br /&gt;
    for (var k in match) {&lt;br /&gt;
        isAlternate = !isAlternate;&lt;br /&gt;
        var trAttribs = isAlternate ? {&amp;quot;class&amp;quot;: &amp;quot;alternate&amp;quot;} : null;&lt;br /&gt;
        var v = match[k];&lt;br /&gt;
        var result = v;&lt;br /&gt;
        // Highlight the result for the input property as three spans:&lt;br /&gt;
        //    [beforeMatch, duringMatch, afterMatch]&lt;br /&gt;
        if (k == &amp;quot;input&amp;quot;) {&lt;br /&gt;
            var end = match.index + match[0].length;&lt;br /&gt;
            result = [&lt;br /&gt;
                SPAN(null, v.substr(0, match.index)),&lt;br /&gt;
                SPAN({&amp;quot;class&amp;quot;: &amp;quot;highlight&amp;quot;}, v.substring(match.index, end)),&lt;br /&gt;
                SPAN(null, v.substr(end))&lt;br /&gt;
            ];&lt;br /&gt;
        }&lt;br /&gt;
        res.push(&lt;br /&gt;
            TR((isAlternate ? {&amp;quot;class&amp;quot;: &amp;quot;alternate&amp;quot;} : null),&lt;br /&gt;
                TD(null, k),&lt;br /&gt;
                TD(null, result),&lt;br /&gt;
                TD(null, repr(v))&lt;br /&gt;
            )&lt;br /&gt;
        );&lt;br /&gt;
    }&lt;br /&gt;
    return res;&lt;br /&gt;
};&lt;br /&gt;
RegExpManager.prototype.submit = function () {&lt;br /&gt;
    this.update();&lt;br /&gt;
    return false;&lt;br /&gt;
};&lt;br /&gt;
regExpManager = new RegExpManager();&lt;br /&gt;
addLoadEvent(regExpManager.initialize);&lt;br /&gt;
// rewrite the view-source links&lt;br /&gt;
addLoadEvent(function () {&lt;br /&gt;
    var elems = getElementsByTagAndClassName(&amp;quot;A&amp;quot;, &amp;quot;view-source&amp;quot;);&lt;br /&gt;
    var page = &amp;quot;mochiregexp/&amp;quot;;&lt;br /&gt;
    for (var i = 0; i &amp;lt; elems.length; i++) {&lt;br /&gt;
        var elem = elems[i];&lt;br /&gt;
        var href = elem.href.split(/\//).pop();&lt;br /&gt;
        elem.target = &amp;quot;_blank&amp;quot;;&lt;br /&gt;
        elem.href = &amp;quot;../view-source/view-source.html#&amp;quot; + page + href;&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;&lt;br /&gt;
            MochiRegExp - JavaScript Regular Expression (RegExp) Explorer&lt;br /&gt;
        &amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;&lt;br /&gt;
                This demo does &amp;quot;live&amp;quot; Regular Expression matching to help you&lt;br /&gt;
                toy with JavaScript Regular Expressions.&lt;br /&gt;
                It takes advantage of&lt;br /&gt;
                &amp;lt;a href=&amp;quot;http://mochikit.ru&amp;quot;&amp;gt;MochiKit&amp;lt;/a&amp;gt;&amp;quot;s&lt;br /&gt;
                &amp;lt;a href=&amp;quot;../../doc/html/lib/MochiKit/DOM.html&amp;quot;&amp;gt;MochiKit.DOM&amp;lt;/a&amp;gt;&lt;br /&gt;
                to manipulate the display and &lt;br /&gt;
                &amp;lt;a href=&amp;quot;../../doc/html/lib/MochiKit/Async.html&amp;quot;&amp;gt;MochiKit.Async&amp;lt;/a&amp;gt;&lt;br /&gt;
                to facilitate the &amp;quot;half a second&amp;quot; live updating.&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;&lt;br /&gt;
                The table will update while you&amp;quot;re typing if you&amp;quot;re idle for&lt;br /&gt;
                half a second or when you tab away from the field, whichever&lt;br /&gt;
                comes first.  If you enter an invalid RegExp, the RegExp label&lt;br /&gt;
                will turn &amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;red&amp;lt;/span&amp;gt; (the &amp;quot;error&amp;quot; class).&lt;br /&gt;
                For a good JavaScript&amp;quot;s RegExp reference, see&lt;br /&gt;
                &amp;lt;a href=&amp;quot;http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:Regular_Expressions&amp;quot;&amp;gt;Regular Expressions&amp;lt;/a&amp;gt;&lt;br /&gt;
                over at &amp;lt;a href=&amp;quot;http://developer.mozilla.org&amp;quot;&amp;gt;DevMo&amp;lt;/a&amp;gt;.&lt;br /&gt;
            &amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;form id=&amp;quot;regexp_form&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;table class=&amp;quot;form&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;col class=&amp;quot;column1&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;col class=&amp;quot;column2&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;tbody&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;&amp;lt;label id=&amp;quot;lab_text&amp;quot; for=&amp;quot;inp_text&amp;quot;&amp;gt;Input Text:&amp;lt;/label&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&amp;lt;input id=&amp;quot;inp_text&amp;quot; name=&amp;quot;text&amp;quot; type=&amp;quot;text&amp;quot; class=&amp;quot;textbox&amp;quot; size=&amp;quot;80&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;&amp;lt;label id=&amp;quot;lab_regexp&amp;quot; for=&amp;quot;inp_regexp&amp;quot;&amp;gt;RegExp:&amp;lt;/label&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&amp;lt;input id=&amp;quot;inp_regexp&amp;quot; name=&amp;quot;regexp&amp;quot; type=&amp;quot;text&amp;quot; class=&amp;quot;textbox&amp;quot; size=&amp;quot;80&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                    &amp;lt;tr&amp;gt;&lt;br /&gt;
                        &amp;lt;th&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
                        &amp;lt;td&amp;gt;&amp;lt;input type=&amp;quot;reset&amp;quot; value=&amp;quot;Clear&amp;quot; /&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
                    &amp;lt;/tr&amp;gt;&lt;br /&gt;
                &amp;lt;/tbody&amp;gt;&lt;br /&gt;
            &amp;lt;/table&amp;gt;&lt;br /&gt;
        &amp;lt;/form&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div&amp;gt;&lt;br /&gt;
            View Source: [&lt;br /&gt;
            &amp;lt;a href=&amp;quot;index.html&amp;quot; class=&amp;quot;view-source&amp;quot;&amp;gt;index.html&amp;lt;/a&amp;gt; |&lt;br /&gt;
            &amp;lt;a href=&amp;quot;mochiregexp.js&amp;quot; class=&amp;quot;view-source&amp;quot;&amp;gt;mochiregexp.js&amp;lt;/a&amp;gt;&lt;br /&gt;
            ]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;table class=&amp;quot;datagrid&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;thead&amp;gt;&lt;br /&gt;
                &amp;lt;tr&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Property&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Result&amp;lt;/th&amp;gt;&lt;br /&gt;
                    &amp;lt;th&amp;gt;Repr&amp;lt;/th&amp;gt;&lt;br /&gt;
                &amp;lt;/tr&amp;gt;&lt;br /&gt;
            &amp;lt;/thead&amp;gt;&lt;br /&gt;
            &amp;lt;tfoot class=&amp;quot;invisible&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/tfoot&amp;gt;&lt;br /&gt;
            &amp;lt;tbody id=&amp;quot;result_body&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td colspan=&amp;quot;3&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/tbody&amp;gt;&lt;br /&gt;
        &amp;lt;/table&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>