Heim > Artikel > Backend-Entwicklung > Lernen Sie die Grundlagen regulärer Ausdrücke
In diesem Artikel geht es um die Grundlagen von regulären Ausdrücken von JavaScript. Wenn Sie mit regulären Ausdrücken in JavaScript nicht vertraut sind, können Sie einfach vorbeikommen und sich mit den Grundlagen befassen von JavaScript – für diejenigen, die damit nicht vertraut sind, schauen wir uns das gemeinsam an!
Heute habe ich das RegExp-Objekt gelernt, als ich Javascript Ich habe die Gelegenheit genutzt, reguläre Ausdrücke zu lernen. Ich war noch nie zuvor mit ihnen in Kontakt gekommen, also habe ich die Gelegenheit genutzt, sie zu lernen.
Referenz-Website:30-minütiges Einführungs-Tutorial zu regulären AusdrückenKlicken Sie hier, um den Link zu öffnen
Zeichenfolgen auszudrücken.
+ | bedeutet eine beliebige Anzahl des Zeichens, das vor + erscheint, z. B. ein+, bedeutet, dass es eine beliebige Anzahl von Zeichen gibt davor a (einmal oder mehrmals wiederholen)
|
+ | 表示+前面出现的任意个数的该字符,例如a+,表示前面有任意个数的a(重复1次或多次) |
? | 重复0或1次 |
{n} | 重复n次 |
{n, } | 重复大于等于n次 |
{n, m} | 重复n到m次 |
d | 表示一个0-9的数字 |
^ | 匹配字符串的开始 |
& | 匹配字符串的结束 |
Beginnen Sie direkt mit dem Beispiel:
Beispiel 1: Wenn ich das Wort Hallo abgleichen möchte, wird der reguläre Ausdruck geschrieben (Übereinstimmungsregel) lautet: hello
Dadurch werden alle Wörter abgeglichen, die hallo enthalten, z. B.: helloworld wird ebenfalls abgeglichen, aber wenn Sie nur hallo abgleichen möchten, dann brauchen Sie Um das Metazeichen b zu verwenden, um „Hallo“ vorher und nachher zu trennen und ein separates Wort „Hallo“ zu bilden, , dann sollte der reguläre Ausdruck lauten: bhellob
Beispiel 2: Wann Sie möchten Wenn auf das gesuchte „Hallo“ ein „Welt“-Zeichen folgt, sollten Sie die Metazeichen „bhellob.*worldb“ verwenden > Beispiel 3: Wenn Sie Telefonnummern wie 021-xxxxxxx zuordnen möchten, sollten Sie 021-ddddddd verwenden, wobei „021-
“ ein einfaches Zeichen ist, das keines darstellt besondere Bedeutung und Folgendes: Das verwendete d ist ein Metazeichen. Dieser reguläre Ausdruck kann als 021-d{7} abgekürzt werden, was bedeutet, dass d siebenmal wiederholt wird.Beispiel 4: Ordnen Sie eine oder mehrere aufeinanderfolgende Zahlen zu, d+
Beispiel 5: Ordnen Sie Wörter zu, die mit a, baw*b beginnenBeispiel 6: Übereinstimmung mit 5-12-stelliger QQ-Nummer, ^d{5, 12}&
4. Zeichen-Escape
Wenn die Zeichenfolge, die Sie suchen möchten, Metazeichen enthält, müssen Sie diese vor den Metazeichen hinzufügen, um die Metazeichen in normale Zeichen umzuwandeln.
Das in diesem Teil gelöste Problem besteht darin, was zu tun ist, wenn die Zeichen, die Sie abgleichen möchten, keine entsprechenden Metazeichen haben, dann wir Sie müssen manuell eine Zeichenklasse erstellen.
steht für Escapezeichen (,
?bedeutet, dass es 0 oder 1 Mal wiederholt wird,
dbedeutet zwei Zahlen, [), -] bedeutet die Zeichenklasse von ) und -, ? bedeutet, dass es 0 oder 1 Mal wiederholt wird, gefolgt von 8 Zahlen. 6. Verzweigungsbedingungen Was oben geschrieben steht
(?0d{2}[), -]?d{8} ist wie Diese regulären Ausdrücke stimmen möglicherweise mit falschen Zeichenfolgen wie (01012345678 oder (010-12345678) überein. In solchen Fällen können Sie Verzweigungsbedingungen verwenden. Die Verzweigungsbedingungen ähneln dem logischen oder || in js und sind alle kurzgeschlossenFür die obige Situation kann sie als (0d{2})d{8 geschrieben werden }. |0d{2}-d{8}|(0d{2})d{8}
7 Dieser Teil Um das Problem der Wiederholung nicht eines einzelnen Zeichens, sondern mehrerer Zeichen zu lösen, können wir bei der Wiederholung eines einzelnen Zeichens das Qualifikationsmerkmal in Zeichen + Metazeichen verwenden. Wenn jedoch mehrere sich wiederholende Zeichen vorhanden sind, können wir diese zusätzlich hinzufügen sich wiederholende Zeichen. (). Zum Beispiel kann der folgende reguläre Ausdruck verwendet werden, um die IP-Adresse darzustellen: )
Wenn Sie Zeichen finden müssen, die nicht einfach definiert werden können, z. B. andere Zeichen als xxx, müssen Sie das Antonym verwenden
W |
|
||||||||||||
D | Entspricht jedem Zeichen, das keine Zahl ist | ||||||||||||
B | Entspricht jedem Zeichen, das nicht der Anfang oder das Ende eines Wortes ist | ||||||||||||
S | Entspricht jedem Zeichen, das kein Leerzeichen ist | ||||||||||||
[^x] | Entspricht allem außer x Zeichen außer aeiou | ||||||||||||
[^aeiou] | Entspricht anderen Zeichen als aeiou |
Der Inhalt dieses Teils stimmt mit der vorherigen Gruppierung überein, wenn wir () verwenden. Um Zeichen zu gruppieren, können wir uns später weiterhin auf diese Gruppierung durch Nummerierung beziehen. Bei der Gruppierung nach () beginnt die Gruppierung bei 1 in der Reihenfolge des Auftretens von (. Beispielsweise kann der reguläre Ausdruck b(w+)s+1b verwendet werden Um wiederholte Vorkommen abzugleichen, beziehen sich Wörter wie „go go“ usw. hier auf die zuvor vorkommende Gruppierung bis 1.
Weitere beteiligte Rückreferenzsyntaxen sind:
(exp) | 匹配exp,并捕获当前内容到自动的分组里 |
(? |
匹配exp,并捕获当前内容并分配组名为name |
(?:exp) | 匹配exp,不为捕获的内容分配组名 |
wird verwendet, um den Teil vor oder nach einem bestimmten Teil des Inhalts zu finden, schließt den Inhalt jedoch nicht ein.
Regulärer Ausdruck (?=exp) bedeutet zu behaupten, dass der später erscheinende Teil mit dem Ausdruck exp übereinstimmen kann. Beispielsweise entspricht bw+(?=ingb) dem vorderen Teil von Wörtern, die mit ing enden. Wenn Sie beispielsweise nach „Ich tanze und singe“ suchen, werden Tanz und Gesang abgeglichen (da w+ vorhanden ist, wird es nicht als s abgeglichen).
Regulärer Ausdruck (?<=exp) bedeutet zu behaupten, dass der vorherige Teil mit dem Ausdruck exp übereinstimmen kann. Beispielsweise wird (?<=bre)w+b mit der zweiten Hälfte des Wortes übereinstimmen, das mit re beginnt. Bei der Suche nach „Lesen“ wird beispielsweise „ading“ gefunden .
Wenn Sie an alle drei Ziffern einer sehr langen Zahl ein Komma hinzufügen möchten, z. B. an 123456789, können Sie den regulären Ausdruck ((?<=d) verwenden )d{3 })+b, das Suchergebnis ist 234567890 (Ich verstehe diesen Teil der Suchregeln nicht...)
Das folgende Beispiel verwendet zwei Behauptungen gleichzeitig Gleichzeitig wird (?=
Im Allgemeinen besteht der Zweck der Nullbreitenbehauptung darin, den Start- oder Endpunkt übereinstimmender Zeichen gemäß bestimmten Regeln zu bestimmen.
Wie bereits erwähnt, verwenden Sie Antonyme, um Zeichen zu finden, die kein bestimmtes Zeichen sind oder sind nicht in einem bestimmten Zeichen.
Wenn Sie beispielsweise ein Wort finden möchten, bei dem der Buchstabe q vorkommt, aber nicht von u gefolgt wird. Sie könnten bq[^u]w*b schreiben. Bei einem solchen Ausdruck tritt jedoch ein Fehler auf, wenn q am Ende eines Wortes erscheint, da [^u] mit dem Trennzeichen des Wortes übereinstimmt, das dann mit dem nächsten Wort übereinstimmt, das mit Zeichen wie „Kämpfen im Irak“ übereinstimmt . Zeichenfolge.
Um das Antonymbelegungsproblem zu lösen, können wir eine negative Nullbreitenbehauptung verwenden, da sie nur mit einer Position übereinstimmt und keine Zeichen verbraucht. Der obige Ausdruck kann als bq(?!u)w*b geschrieben werden.
Ebenso verwenden wir (?
Ein komplexeres Beispiel: (?<=<(w+)>).*(?=1>)
Wenn Sie das vorherige (?<=) und das folgende (?=) sehen, wissen Sie, dass sowohl die Vorder- als auch die Rückseite Behauptungen mit der Breite Null sind und < ;(w+)> stellt das HTML-Tag dar. Wenn das vorherige
12. Kommentare
Kommentare durch die Syntax enthalten (?#comment), Beispiel: 2[0-4]d(?#200-249).
13. Gier und Faulheit
Ähnlich wie bei der Flagge in js gibt es Groß-/Kleinschreibung, Mehrzeilenmodus, globalen Modus usw.
In diesem Teil geht es um das Matching-Problem, wenn Sie beispielsweise den mathematischen Ausdruck ( 5*3))) (5*3) kann nicht einfach als (.*) geschrieben werden, da dies mit dem gesamten Ausdruck übereinstimmt. Dann ist die Matching-Strategie, die wir anwenden sollten, dem von uns gelernten Klammer-Matching-Problem ähnlich. Verwenden Sie den Stapel, um ihn zu lösen. Wenn der letzte Stapel leer ist, bedeutet dies, dass er auf den Stapel stößt Klammern im Ausdruck stimmen vollständig überein. Wenn sie nicht leer sind, führt die Regex-Engine einen Backtrack aus, um sicherzustellen, dass die Klammern übereinstimmen.
Verwandte Empfehlungen:
Wie man reguläre Ausdrücke in JS verwendet
Das obige ist der detaillierte Inhalt vonLernen Sie die Grundlagen regulärer Ausdrücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!