Heim  >  Artikel  >  Web-Frontend  >  Vertiefendes Verständnis der Analyse vordefinierter Klassen und Grenzen regulärer JS-Ausdrücke

Vertiefendes Verständnis der Analyse vordefinierter Klassen und Grenzen regulärer JS-Ausdrücke

不言
不言Original
2018-07-11 09:37:451868Durchsuche

Dieser Artikel stellt hauptsächlich die Analyse vordefinierter Klassen und Grenzen für ein tieferes Verständnis der regulären JS-Ausdrücke vor. Jetzt kann ich ihn mit Ihnen teilen

Vorläufig definierte Klassen

Reguläre Ausdrücke stellen vordefinierte Klassen bereit, um gängige Zeichenklassen abzugleichen

字符 等价类 含义
. [^rn] 除了回车符和换行符以外的所有字符
d [0-9] 数字字符
D [^0-9] 非数字字符
s [tnx0Bfr] 空白符
S [^tnx0Bfr] 非空白符
w [a-zA-Z_0-9] 单词字符(字母、数字、下划线)
W [^a-zA-Z_0-9] 非单词字符

Verwenden Sie vordefinierte Klassen, um schnell Ziele abzugleichen, z. B.: um ein ab + eine Zahl + ein beliebiges Zeichen abzugleichen, verwenden Sie Für Zeichenklassen und Bereichsklassen muss viel Code geschrieben werden, aber die Verwendung vordefinierter Klassen erfordert nur das Schreiben von:

/ab\d/

Grenze

Reguläre Ausdrücke stellen auch mehrere häufig verwendete Grenzübereinstimmungszeichen bereit

字符 含义
^ 以xxx开始
$ 以xxx结束
b 单词边界
B 非单词边界

Grenzen sind oft nützlich, wenn wir nur einen Teil der Wörter in einem Absatz und nicht die Buchstaben in den Wörtern abgleichen möchten

Wortgrenzen vs. Nicht-Wortgrenzen

Manchmal , ich Ich möchte das Wort „is“ in einem Satz, aber nicht den Buchstaben „is“ im Wort abgleichen. Zu diesem Zeitpunkt kann die Verwendung von Wortgrenzen dieses Problem leicht lösen:

let text = 'This is a boy'

let reg1 = /is/g

let reg2 = /\bis\b/g

text.replace(reg1, 'IS')    // 没有使用单词边界\b区分,结果为:ThIS IS a boy

text.replace(reg2, 'IS')    // 使用了单词边界进行区分,结果为:This IS a boy

Und wenn ich nur den Buchstaben „at“ abgleichen möchte Das Ende des Wortes Was ist wann zu tun? Zu diesem Zeitpunkt können Sie Wortgrenzen und Nicht-Wortgrenzen auf witzige Weise vermischen:

let text = 'This is a boy'

let reg3 = /\Bis\b/g

text.replace(reg3, 'IS')    // ThIS is a boy

^ und $ – der Anfang und das Ende von

werden oft verwendet. Wir möchten den Anfang oder anpassen Endzeichen, die Verwendung von ^ und $ kann dieses Problem perfekt lösen:

let text = '@123@abc@'

let reg1 = /@/g

text2.replace(reg1, 'Q')    // 没有使用^和$,匹配了所有的@,结果为:Q123QabcQ

let reg2 = /^@/g

text.replace(reg2, 'Q')     // 使用^匹配开头的@,结果为:Q123@abc@

let reg3 = /@$/g

text.replace(reg3, 'Q')     // 使用$匹配结尾的@,结果为:@123@abcQ

Tipps: Bei der tatsächlichen Verwendung muss ^ vor dem passenden Element geschrieben werden, während $ dies tun muss nach dem passenden Element entladen werden

Bei mehreren Zeilen verwenden Sie ^ und $

Bei mehreren Zeilen verwenden Sie m, um in den Mehrzeilenmodus zu wechseln, um den Anfang abzugleichen und schließen Sie die passenden Zeichen jeder Zeile ab:

let text = '@123\n@456\n@789'

let reg1 = /^@\d/g

text.replace(reg1, 'Q')      
/*
    由于换行实际上只是一个换行符字符,在正常模式下,依然看做一段字符
    结果为:
    Q23
    @456
    @789
*/

let reg2 = /^@\d/gm

text.replace(reg2, 'Q')
/*
    添加了m进入多行模式:
    结果为:
    Q23
    Q56
    Q89
*/

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Umfassendes Verständnis der Bereichsklassenanalyse von regulären JS-Ausdrücken

Umfassendes Verständnis von regulären JS-Ausdrücken Analyse von Metazeichen und Zeichenklassen

Das obige ist der detaillierte Inhalt vonVertiefendes Verständnis der Analyse vordefinierter Klassen und Grenzen regulärer JS-Ausdrücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn