Reguläre Ausdrücke in JavaScript
Reguläre Ausdrücke in JavaScript
Allgemeine Beschreibung
Reguläre Ausdrücke sind Muster, um für bestimmte Kombinationen von Zeichen in Text-Strings (eine solche Suche wird als Pattern Matching) zu suchen. Es gibt zwei Möglichkeiten der Zuordnung von Variablen von regulären Ausdrücken, wie folgt:
Mit einem Objektinitialisierer: var re = / Muster / switch?.
Mithilfe des Designers RegExp: var re = new RegExp ("Muster" [, "switch"]?).
Dieses Muster - ein regulärer Ausdruck, und der Schalter - optional Suchoptionen.
, следует применять в тех случаях, когда значение регулярного выражения остается неизменным во время работы сценария. Objektinitialisierer zum Beispiel var re = / ab + c /, sollte in den Fällen angewendet werden, wenn der Wert des regulären Ausdrucks unverändert während des Szenarios bleibt. Diese regulären Ausdrücke werden in den Prozess des Herunterladens das Skript zusammengestellt, und deshalb schneller laufen.
, следует применять в тех случаях, когда значение переменной будет меняться. Aufruf des Konstruktors, zB var re = new RegExp ("AB + C"), sollte in Fällen, in denen der Wert der Variablen ändert angewendet werden. Wenn Sie den regulären Ausdruck ein paar Mal die Absicht, es Sinn macht, es zu kompilieren, kompilieren Sie das Verfahren für eine effizientere Suchmuster.
Beim Anlegen eines regulären Ausdrucks in Betracht gezogen werden, dass der Abschluss von seinem Zitat die Notwendigkeit, die Escape-Sequenz verwenden, wie in jedem anderen String-Konstante bedeutet. Zum Beispiel sind die beiden folgenden Ausdrücke gleichwertig:
var re = /\w+/g;
var re = new RegExp("\\w+", "g"); // В строке "\" должно заменяться на "\\" Hinweis: Der reguläre Ausdruck darf nicht leer sein: zwei Zeichen / / setzt die Reihe beginnt einen Kommentar. Deshalb, um einen leeren regulären Ausdruck anzugeben, verwenden Sie den Ausdruck /.? /.
Reguläre Ausdrücke werden verwendet und Prüfverfahren "exec RegExp-Objekt und Methoden entsprechen, tauschen, suchen und Split-Objekt String. Wenn wir nur brauchen, um zu überprüfen, ob die Zeichenfolge ein Wort, das dem Muster entspricht, werden die angewandten Prüfmethoden oder suchen. Wenn wir einen substring (oder substring), nach dem Muster extrahieren müssen, müssen wir die Methoden der exec verwenden oder sich ihnen anzupassen. Die Replace-Methode durchsucht die angegebenen Teilzeichenfolge und ersetzen Sie ihn durch einen anderen String-und Split-Methode können Sie einen String in mehrere Teilstrings unterteilt, basierend auf regulären Ausdrücken oder reguläre Text-String. Für weitere Informationen über die Verwendung von regulären Ausdrücken werden in der Beschreibung der Methoden gegeben.
Syntax für reguläre Ausdrücke
Der Ausdruck kann der normale Zeichen, in welchem Fall es auf eine bestimmte Kombination von Zeichen pro Zeile entsprechen, werden bestehen. Zum Beispiel, der Ausdruck / com / entspricht dem gewählten Teilzeichenketten in den folgenden Zeilen: "Klumpen", "gierig", "Commander of the Navy." Allerdings gibt die Flexibilität und Leistungsfähigkeit von regulären Ausdrücken die Möglichkeit, Sonderzeichen in ihnen, die in der folgenden Tabelle aufgelistet sind.
Sonderzeichen in regulären Ausdrücken:
\ - Für Zeichen, die in der Regel behandelt werden, buchstäblich, zeigt an, dass das nächste Zeichen Besonderes ist. Zum Beispiel, / n / n ist der Brief, und / \ n / passt auf einen Zeilenumbruch. Für Zeichen, die in der Regel als besondere behandelt werden, bedeutet, dass das Symbol wörtlich verstanden werden sollte. Zum Beispiel, / ^ / bezeichnet den Anfang der Zeile, und / \ * / entspricht jedem Zeichen ^. / \ \ / Spiele ein Backslash \.
* - Übereinstimmung mit dem Anfang der Zeile.
$ - Spiel das Ende der Zeile.
* - Entspricht einer Wiederholung des vorhergehenden Zeichens null oder mehrere Male.
+ - Übereinstimmung mit dem vorhergehenden Charakter Wiederholung von ein-oder mehrmals.
- Entspricht einer Wiederholung des vorhergehenden Zeichens Null oder Eins mal.
. - Entspricht einem beliebigen Zeichen außer Newline.
(Pattern) - Entspricht dem Linienmuster und speichert die Übereinstimmung gefunden wird.
(:? Pattern) - Entspricht dem Linienmuster, aber erinnert sich nicht an eine Übereinstimmung gefunden wird. Es wird zum Gruppieren von Bestandteilen der Probe verwendet, zum Beispiel, / um (:? T | shka) / - ist die Kurzform Ausdruck / cat | cat /.
(= Muster?) - Einhaltung der "vorauszusehen", tritt auf, wenn das Line-Linienmuster ohne eine Speicherung der gefundenen Übereinstimmungen. Zum Beispiel / Windows (= 95 |? 98 | NT | 2000) / entspricht "Windows" in der Zeichenfolge "Windows 98", aber nicht auf die Zeile "Windows 3.1" entsprechen. Nach dem Abgleich wird die Suche aus der Position nach dem Muster entspricht, ohne zu ahnen.
(Pattern?!) - Einhaltung der "vorauszusehen", wird durch die Nicht-Linienmuster ohne eine Speicherung der gefundenen Treffer verursacht. Zum Beispiel / Windows (95 |? 98 | NT | 2000) / entspricht "Windows" in line "Windows 3.1", aber nicht auf den String "Windows 98" entsprechen. Nach dem Abgleich wird die Suche aus der Position nach dem Muster entspricht, ohne zu ahnen.
x | y - Spiele entweder x oder y.
{N} - n - eine nicht-negative ganze Zahl ist. Genau n Vorkommen des vorhergehenden Zeichens.
{N,} - n - eine nicht-negative ganze Zahl ist. Entspricht n oder mehrere Vorkommen vorherige Zeichen. / X {1} / entspricht / x + /. / X {0,} / entspricht / x * /.
{N, m} - n und m - eine nicht-negative ganze Zahlen. Mindestens n und höchstens m Vorkommen des vorhergehenden Zeichens. / X {0,1} / entspricht / x? /.
[XYZ] - passt auf jedes Zeichen in eckige Klammern gesetzt.
[^ Xyz] - jedes Zeichen außer in eckigen Klammern.
[Az] - Entspricht einem beliebigen Zeichen im angegebenen Bereich.
[^ Az] - jedes Zeichen außer liegen im Bereich.
\ B - Entspricht einer Wortgrenze, dh die Position zwischen einem Wort und einem Leerzeichen oder einem Zeilenumbruch.
\ B - Entspricht einem beliebigen Position, mit Ausnahme einer Wortgrenze.
\ Cx - Entspricht dem Zeichen Strg + X. Zum Beispiel, / \ CI / äquivalent zu / \ t /.
\ D - Spiele Reihe. Entspricht [0-9].
\ D - Entspricht nicht-numerische Zeichen. Gleichbedeutend mit [^ 0-9].
\ F - Am besten für einen Transfer-Format (FF).
\ N - Am besten für einen Zeilenvorschub (LF).
\ R - Am besten für einen Wagenrücklauf (CR).
\ S - Am besten für einen Leerraum. Äquivalent zu / [\ f \ n \ r \ t \ v] /.
\ S - Für jeden nicht-leeren Zeichen. Äquivalent zu / [^ \ f \ n \ r \ t \ v] /.
\ T - Tabulator Spiele (HT).
\ V - Entspricht einem vertikalen Register (VT).
\ W - Entspricht Buchstaben, Zahlen oder Unterstrich. Äquivalent zu / [A-Za-z0-9_] /.
\ W - jedes Zeichen außer Buchstaben, Ziffern oder Unterstriche.
Äquivalent zu / [^ A-Za-z0-9_] /.
\ N n - eine positive Zahl ist. Entspricht der n-ten gespeicherten Teilstring. Berechnet durch Zählen der linken Klammern. Wenn die Klammer vor dem Symbol kleiner als n ist, ist es gleichbedeutend mit \ 0n.
\ N 0n - Oktalzahl, nicht größer als 377. Entspricht dem Zeichen mit Oktal-Wert n. Zum Beispiel, / \ 011 / entspricht / \ t /.
\ N Xn - eine Hexadezimalzahl, bestehend aus zwei Ziffern. Entspricht dem Zeichen mit Hexcode n. Zum Beispiel, / \ x31 / gleichwertig / 1 /.
\ N Un - eine Hexadezimalzahl, bestehend aus vier Ziffern. Am besten für einen Unicode-Zeichen mit Hexcode n. Zum Beispiel, / \ u00A9 / Äquivalent / c /.
Reguläre Ausdrücke werden ähnlich wie andere Ausdrücke von JavaScript, also berechnet, unter Berücksichtigung der Priorität von Operationen: Operationen mit höherer Priorität werden zuerst ausgeführt. Wenn die Operationen gleicher Priorität haben, dann werden sie von links nach rechts. Die folgende Tabelle listet die Operationen der regulären Ausdrücke in absteigender Reihenfolge ihrer Prioritäten haben Operationen, in der gleichen Zeile befindet sich dieselbe Rangfolge.
Operations:\ () (?:) (?=) (?!) [] * + ? . {n} {n,} {n,m} ^ $ \метасимвол | \ () (?:) (?=) (?!) [] * + ? . {n} {n,} {n,m} ^ $ \метасимвол | Suchoptionen
Wenn Sie einen regulären Ausdruck zu erstellen, können wir festlegen, zusätzliche Suchoptionen:
i (ignore case). Unterscheidet nicht zwischen Groß-und Kleinschreibung zu unterscheiden.
g (globale Suche). Die globale Suche nach allen Vorkommen der Probe.
m (Multiline). Multi-line-Suche.
Jede Kombination dieser drei Möglichkeiten, wie zum Beispiel IG oder gim.
Ein Beispiel.
var s = "Изучаем язык JavaScript"; var re = /JAVA/; var result = re.test(s) ? "" " : "" не "; document.write("Строка "" + s + result + "соответствует образцу " + re); Da reguläre Ausdrücke unterscheiden Groß-und Kleinbuchstaben, zeigt dieses Beispiel den Text im Browser-Fenster:
Die Zeichenfolge "Learning Sprache ist JavaScript" entspricht nicht dem Muster / JAVA /
Ersetzen wir nun die zweite Zeile im Beispiel var re = / JAVA / i;, dann wird der Bildschirm zeigt den Text:
Die Zeichenfolge "Learning Sprache ist JavaScript" entspricht der Probe / JAVA / i
Betrachten wir nun die globale Suchmöglichkeit. Es wird häufig verwendete Methode ersetzen Sie das Suchmuster und ersetzt nach dem übereinstimmenden Teilstring durch einen neuen. Tatsache ist, dass standardmäßig diese Methode nur die erste übereinstimmende Teilstring ersetzt und gibt das Ergebnis. Sich das folgende Szenario:
var s = "Мы пишем сценарии на JavaScript, " + "но JavaScript - не единственный сценарный язык."; var re = /JavaScript/; document.write(s.replace(re, "VBScript")); Er bringt auf den Text des Browser-Fensters, die nicht zum gewünschten Ergebnis übereinstimmt: Wir sind das Schreiben von Skripts in VBScript, JavaScript, aber - ist nicht die einzige Skriptsprache. Um sicherzustellen, dass alle Vorkommen der Zeichenfolge "JavaScript" von "VBScript" ersetzt worden ist, müssen wir den regulären Ausdruck var re = / JavaScript / g zu ändern;. Dann ist die resultierende Zeichenfolge wäre:
Wir schreiben in VBScript, aber VBScript - ist nicht die einzige Skriptsprache.
Schließlich ermöglicht Multi-Line-Suchoption für den Mustervergleich String-Ausdruck, bestehend aus mehreren Zeilen Text durch einen Zeilenumbruch verbunden. Standardmäßig ist die Pattern-Matching beendet, wenn gefunden, einen Zeilenumbruch. Diese Option überwindet diese Einschränkung und bietet ein Suchmuster um den ursprünglichen Linie. Es beeinflusst auch die Interpretation von einigen Sonderzeichen in regulären Ausdrücken, nämlich das Zeichen ^ wird in der Regel nur mit dem ersten Element des Strings assoziiert. Wenn mehrzeilige Suche Option aktiviert ist, wird es mit jeder Zeile Element, das durch einen Zeilenumbruch vorausgegangen verglichen wird. Typischerweise wird das $-Symbol nur mit dem letzten Element des Strings assoziiert. Wenn mehrzeilige Suche Option aktiviert ist, wird es mit jeder Zeile Element, das ein Zeilenumbruch ist verglichen.
In Erinnerung an die Teilstrings gefunden
Wenn ein Teil eines regulären Ausdrucks in Klammern gesetzt, dann wird der entsprechende Teilstring wird für die spätere Verwendung in Erinnerung bleiben. , 9 $ RegExp-Objekt oder Elemente des Arrays durch exec und Spiel zurück: Um die gespeicherten Teilstrings mit den Eigenschaften von $ 1, zuzugreifen. Im letzteren Fall ist die Anzahl der gefundenen und gespeicherten untergeordneten unbegrenzt.
Das folgende Skript wird die Replace-Methode für die Umlagerung der Worte pro Zeile. Um den gefundenen Text ersetzen nutzt Eigenschaften von $ 1 und $ 2.
var re = /(\w+)\s(\w+)/i; var str = "Mikhail Bulgakov"; document.write(str.replace(re, "$2, $1")) Dieses Skript wird im Browser-Fenster anzuzeigen ist der Text: als \ W = [A-Za-z0-9_], dann die russischen Buchstaben wird nicht funktionieren. Wenn wir die russischen Buchstaben verwenden wollen, dann müssen wir etwas ändern Sie den Code:
var re = /([а-я]+)\s([а-я]+)/i; var str = "Михаил Булгаков"; document.write(str.replace(re, "$2, $1")); // Булгаков, Михаил Das Skript wird im Browser-Fenster anzuzeigen ist der Text: Einführung
Regulärer Ausdruck - ein leistungsfähiges Werkzeug, um eingehende Daten zu verarbeiten. Die Aufgabe, die Ersatzlieferung oder die Freitextsuche erfordert lässt sich perfekt mit diesem fertig werden "Sprache innerhalb einer Sprache." Und obwohl die maximale Wirkung von regulären Ausdrücken kann mit dem Einsatz von Server-Side-Sprachen erreicht werden, aber unterschätzen Sie nicht die Möglichkeiten dieser Anwendung und der Client-Seite.
Konzepte
Ein regulärer Ausdruck (regular expression) - ein Mittel, um Strings oder Abfolge von Zeichen, die ein Muster von Text definiert manipulieren.
Modifier - entwickelt, um "belehren" den regulären Ausdruck.Metazeichen - Sonderzeichen, die Befehle Sprache für reguläre Ausdrücke verwendet werden.
Ein regulärer Ausdruck wird als gewöhnliche Variable definiert, aber statt mit Anführungszeichen Schrägstrich, z. B.: var reg=/рег_выражение/
Unter den einfachsten Mustern verstehen wir diese Muster, die benötigen keine spezielle Symbole.
Zum Beispiel ist unser Ziel, alle Buchstaben "p" (Klein-und Kapitalverkehr) des lateinischen großen Buchstaben "R" im Ausdruck Regulärer Ausdruck zu ersetzen.
Erstellen Sie eine Vorlage var reg = / p / und verwenden Sie die Methode replace tragen seinen Plan
<script language="JavaScript"> var str="Регулярные выражения" var reg=/р/ var result=str.replace(reg, "R") document.write(result) </script> Das Ergebnis ist ein String 'RegulyaRnye Ausdruck "Substitution trat nur beim ersten Auftreten des Buchstaben" P "Groß-und Kleinschreibung. Aber unter den Bedingungen unseres Problems, bedeutet das Ergebnis nicht passt ... Hier brauchen wir die Modifikatoren "g" und "i", die sowohl getrennt als auch zusammen verwendet werden können.
Diese Modifikatoren sind am Ende der Regular Expression Pattern nach dem Schrägstrich gesetzt, und haben folgende Bedeutung: Der Zusatz "G" - gibt den Suchbegriff als "global", dh in unserem Fall, wird der Ersatz für alle Vorkommen des Buchstaben "P" auftreten. Jetzt das Muster sieht so aus: var reg = / p / g, und ersetzen Sie es in unserem Code
<script language="JavaScript"> var str="Регулярные выражения" var reg=/р/g var result=str.replace(reg, "R") document.write(result) </script> bekommen die Zeichenfolge 'RegulyaRnye vyRazheniya '. Der Zusatz "i" - gibt den Suchbegriff Groß-und Kleinschreibung, indem Sie die Modifier in unserem Template var reg = / p / gi, nach der Ausführung des Skripts erhalten wir das gewünschte Ergebnis zu unserer Aufgabe - 'RegulyaRnye vyRazheniya'.
Sonderzeichen (Metazeichen)
Metazeichen beschreiben die Art der Zeichen des Strings, die Art, die Umwelt des Strings im Text, sowie die Anzahl der Zeichen in einer bestimmten Art von Text, den Sie gerade betrachten. Deshalb Metazeichen können in drei Gruppen unterteilt werden:
Metazeichen entsprechen.
Quantitative Metazeichen.
Metazeichen Positionierung.
Metazeichen passenden
\ B Wortgrenze, bezeichnet einen Zustand, in dem das Muster am Anfang oder Ende eines Wortes durchgeführt werden muss.
\ B nicht Wortgrenze, werden die Bedingungen, unter denen die Vorlage nicht am Anfang oder Ende eines Wortes ausgeführt wird.
\ D eine Ziffer von 0 bis 9.
\ D keine Ziffer.
\ S ein einziger NULL-Zeichen entspricht dem Zeichen Platz.
\ S eine einzige nicht-leeren Zeichen, jedes Zeichen außer einem Leerzeichen.
\ W Buchstaben, Ziffern oder dem Unterstrich.
\ W ist nicht nur Buchstaben, Ziffern oder dem Unterstrich.
. Jedes Zeichen, Anzeichen, Buchstaben, Zahlen, etc.
[] Zeichensatz gibt die Bedingung, unter der das Muster für einen Zufall, der Zeichen in eckigen Klammern erfüllt werden müssen.
[^] Eine Reihe von Nicht-Zeichen, legt die Bedingungen, unter denen die Vorlage nicht in jedem Spiel der Zeichen in eckigen Klammern durchgeführt werden sollte.
Quantitative Meta-
* Null oder mehrmals.
? Null oder einmal
+ One und eine größere Anzahl von Zeiten.
{N} genau n-mal.
{N, n} oder mehrere Male.
{N, m}, wenigstens n-mal, aber nicht mehr als m-fache.
Metazeichen Positionierung
^ Am Anfang der Zeile.
$ Am Ende.
Einige Methoden für die Arbeit mit Vorlagen
ersetzen - die Methode, die wir am Anfang des Artikels verwendet, ist es für Suchen und Ersetzen der Probe übereinstimmende Teilstring mit einer neuen Teilstring konzipiert.
Test - Diese Methode überprüft, ob es Überschneidungen in der Linie in Bezug auf die Vorlage und gibt false zurück, wenn das Muster Match endete mit einem Mißerfolg, andernfalls true.
Beispiel:
<script language="JavaScript"> var str="JavaScript" var reg=/PHP/ var result=reg.test(str) document.write(result) </script> Displays als Ergebnis falsch, weil die Zeichenkette "JavaScript" ist nicht gleich der Zeichenfolge "PHP".
Außerdem können Testmethode true oder false zurück, anstatt jede andere Saite vom Programmierer angegeben.
zum Beispiel:
<script language="JavaScript"> var str="JavaScript" var reg=/PHP/ var result=reg.test(str) ? "Строка совпала" : "Строка не совпала" document.write(result) </script> <script language="JavaScript"> var str="JavaScript" var reg=/PHP/ var result=reg.test(str) ? "Строка совпала" : "Строка не совпала" document.write(result) </script> In diesem Fall wird das Ergebnis den String 'Zeile nicht zusammenfallen ". exec - Diese Methode führt die Zuordnung nach dem Modell angegebenen Muster. Wenn das Muster Match endete mit einem Mißerfolg, gibt sie den Wert null. Andernfalls ist das Ergebnis ein Array von Teilstrings, die einem Muster entsprechen. / * Das erste Element des Arrays ist gleich der ursprünglichen Zeichenfolge zu befriedigen, die dem Muster * /
zum Beispiel:
<script language="JavaScript"> var reg=/(\d+).(\d+).(\d+)/ var arr=reg.exec("Я родился 15.09.1980") document.write("Дата рождения: ", arr[0], "< br>") document.write("День рождения: ", arr[1], "< br>") document.write("Месяц рождения: ", arr[2], "< br>") document.write("Год рождения: ", arr[3], "< br>") </script> als Ergebnis erhalten wir vier Zeilen:
Geburtsdatum: 1980.09.15
Geburtstag: 15
Monat der Geburt: 09
Geburtsjahr: 1980
Abschluss
Der Artikel wird angezeigt, nicht alle Features und Annehmlichkeiten von regulären Ausdrücken für ein tieferes Studium dieser Frage würde vorschlagen, um das Objekt RegExp zu prüfen. Ich will nur auf die Tatsache aufmerksam, dass die Syntax für reguläre Ausdrücke nicht, was anders ist als in JavaScript, aber auch in PHP zu ziehen. Zum Beispiel zur Validierung der Eingangs-E-Mail, reguläre Ausdrücke, dass in JavaScript, dass PHP gleich aussehen
/ [0-9a-z_] + @ [0-9a-z_ ^.] +. [Az] {2,3} / i.
Literale
| Wörtlich | Beschreibung |
| \ | Enthalten in den Sonderzeichen, sowie der Dolmetscher macht deutlich, dass das nächste Zeichen - nicht wörtlich zu nehmen. Wird verwendet, um oktalen Zeichencodes aus dem Gedächtnis abrufen und gespeicherte Unterausdrücke für den Einsatz im regulären Ausdruck wörtlich. |
| ^ | Anfang der Zeile |
| $ | End of line |
| * | Bedeutet, dass das vorangestellte Zeichen sollte in der Bar treffen sich viele Male, oder nicht erfüllt |
| + | Bedeutet, dass die vorangehende Zeichen in Zeile sein sollte, um ein oder mehrere Male treffen |
| ? | Bedeutet, dass das vorangestellte Zeichen sollte in einer Reihe einmal gerecht zu werden, oder nicht zu erfüllen |
| {Nummer} | Bedeutet, dass die vorangehende Zeichen der Zeile angegeben, wie oft treffen muss |
| {Nummer} | Bedeutet, dass die vorangehende Zeichen der Zeile angegeben, wie oft oder mehr gerecht werden müssen |
| {Zahl1, Zahl2} | Bedeutet, dass das vorangestellte Zeichen muss die Linie vom ersten zum zweiten die Anzahl der Male treffen |
| . | Jedes Zeichen außer \ n (neue Zeile) |
| (Subexpression) | Ich suche einen Teilausdruck, und speichert die Gruppe von Zeichen gefunden |
| \ Anzahl der | Ermittelt eine angegebene Gruppe von Zeichen mit der früheren wörtlichen gerettet |
| simvol1 | Zeichen 2 | Ist für einen der beiden Charaktere suchen |
| [Zeichensatz] | Ich suche ein Symbol der gestellten Aufgaben |
| [^ Charset] | Suchen für ein beliebiges Zeichen nicht im Set enthalten |
| \ B | Kennzeichnet eine Wortgrenze, der Position zwischen einem Wort und einem Leerzeichen |
| \ B | Ist der Rand der Raum, der Raum zwischen der Position und des Wortes |
| \ C | Entspricht dem Steuerzeichen Typ "Strg" + "Zeichen" |
| \ D | Jede Figur |
| \ D | Jede nicht-stellige Charakter |
| \ F | Das Symbol Übersetzung Seite |
| \ N | Eine neue Linie Charakter |
| \ R | Wagenrücklaufzeichen |
| \ S | Leerzeichen, Tabulator, Zeilenvorschub oder Wagenrücklauf |
| \ T | Tab |
| \ V | Vertikale Aufstellung |
| \ W | Буква, цифра или подчеркивание |
| \xКод | Символ с указанным шеснадцатеричным кодом |
| \oКод | Символ с указанным восмеричным кодом |
| \номер группы | Извлекает из памяти, сохраненную ранее группу символов с заданным номером |
Beispiel
/(\w+)@({\w\._}+)/ Данное выражение ищет любой адрес электронной почты, разбивая его на две части:имя почтового ящика и имя сервера, и сохраняет их в памяти в виде групп символов под номерами 1 и 2.
Класс RegExp
Этот класс отвечает за обработку строк с помощью регелярных выражений. Его конструктор имеет следующий вид:
RegExp( Регулярное выражение , Флаги ) Он принимает только один обязательный пареметр - это "Регулярное выражение", которое заключается в кавычки. Параметр "флаги" представляет собой дополнительные условия поиска и может принимать значения:
- g - задается глобальный поиск, если этот флаг установлен, то выражение возвратит все подходящие слова.
- i - игнорирование регистра символов
- m - многострочный поиск
Для работы с регулярными варажениями используются три метода класса String:
- match - выполняет поиск в строке, используя регулярное выражение, переданное в качестве параметра и возвращает массив с результатами поиска. Если ничего не найдено, возвращается null.
- replase - выполняет поиск и замену в строке, используя регулярные выражения, и возвращает полученную строку.
- search - выполняет поик в строке, используя регулярное выражение, переданное в качестве параметра, и возвращает позицию первой подстроки, совпадающей с регулярным выражением.
Свойства
| Свойство | Beschreibung |
| lastIndex | Задает позицию начала поиска в строке |
| sourse | Возвращает строку регулярного выражения (только чтение) |
| global | Определяет наличие флага g и возвращает соответсявенно true или false |
| ignoreCase | Определяет наличие флага i и возвращает соответсявенно true или false |
| multilane | Определяет наличие флага m и возвращает соответсявенно true или false |
Методы
| Метод | Beschreibung |
| compile ( Регулярное выпажение g,i,m ) | Компелирует регулярное выражение во внутренний формат для ускорения работы, может использоваться для изменения регулярного выражения |
| exec( строка ) | Аналогичен методу match класса String, но строка, где нужно произвести поиск, передается в качестве параметра |
| test( строка ) | Аналогичен методу search класса String, возвращает true или false в зависимости о результатов поиска |
Beispiel
var result, re, str; str="http://www.netscape.com"; re=new RegExp ("w{3}","i"); result=str.match(re) Здесь этот участок скрипта производит поиск текста "www" в строке, которая была присвоена переменной "str" без учета регистра, а метод match возвращает массив result, содержащий результаты поиска.
Глобальный объект RegExp
Этот глобальный объект служит для боступа к результатам поиска с использованием регулярных выражений. Этот объект создается самим интерпритатором и доступен всегда. Формат доступа к его свойствам:
RegExp. свойство Свойства
| Свойство | Beschreibung |
| $номер подвыражения | Возвращает одно из последних найденых подвыражений (зависит от номера). Номер может быть 1-9, т.к.интерпретатор хранит в этом свойстве только девять последних найденых подвыражений, для доступа к остальным используется массив, возвращенный методами match или exec |
| index | Возвращает позоцию в строке найденой подстроки |
| input|&_ | Возвращает строку, где производится поиск |
| lastIndex | Задает позицию начала поиска в строке |
| lastMatch|$& | Возвращает последнюю найденую подстроку |
| lastParent|$+ | Возвращает последнюю найденую группу символов, если в регулярном выражении использовались подвыражения |
| leftContext|$' | Возвращает строку, составленую из всех символов от начала строки до последней найденой подстроки, не включая ее |
| rightContext|$' | Возвращает строку, составленую из всех символов от последней найденой подстроки, не включая ее, до конца исходной строки |
Примеры использования Регулярных выражений
Разбор URL
var re, str, protocol, address, filename, result; str="http//www.somedomain.ru/index2.html"; re=new RegExp("((\w+): \/\/)?([^/]+) (.*)?","i"); result=re.exec(str); if (result !=null) { protocol=RegExp.$2; address=RegExp.$3; filename=RegExp.$4; } Данный скрипт разбивает интернет адрес на несколько составных частей. В регелярном выражении использовалось несколько подвыражений, которые сохраняются интерпритатором следующим образом: сначала сохраняется внешнее выражение, а затем внутренее. После регулярного выражения следует строка (result=re.exec(str);), которая начинает разбивание адреса, а далее проверяется правильность адреса и, в случае положительного результата, происходит присваивание переменным соответствующих частей адреса.
Функция удаления пробелов в начале и конце строки
function trim(str) { return str.toString().replace(/^[ ]+/, '').replace(/[ ]+$/, ''); } Другой вариант: function trim(str) { return str.replace(/^\s+|\s+$/g, ''); } Поиск музыки на странице
var mmReg = /(?:http:\/\/[\w.]+\/)?(?!:\/\/)[^<^>^"^'^\s]+\.(?:aiff|au|avi|flv|mid|mov|mp3|ogg|ra|rm|spl|swf|wav|wma|wmv)(?!\w)/ig; this.tmp = this.allText.match(mmReg); if (this.tmp && this.search_common_embeds) if ((this.tmp.length > 1)) if((this.tmp.length > 2) || (this.tmp[0]!=this.tmp[1])) ...





|