Heim  >  Artikel  >  Web-Frontend  >  Teilen Sie einige häufig verwendete Beispiele für reguläre Ausdrücke

Teilen Sie einige häufig verwendete Beispiele für reguläre Ausdrücke

零下一度
零下一度Original
2017-06-28 10:59:271100Durchsuche

Zusammenfassung häufig verwendeter regulärer Ausdrücke

Reguläre Ausdrücke werden auch als reguläre Ausdrücke und konventionelle Ausdrücke bezeichnet. (Englisch: Regulärer Ausdruck, im Code oft als Regex, Regexp oder RE abgekürzt), ein Konzept aus der Informatik. Reguläre Ausdrücke verwenden eine einzelne Zeichenfolge, um eine Reihe von Wörtern zu beschreiben und abzugleichen, die einer bestimmten Syntaxregel entsprechen. In vielen Texteditoren werden häufig reguläre Ausdrücke verwendet, um Text abzurufen und zu ersetzen, der einem bestimmten Muster entspricht.

Reguläre Ausdrücke, gibt es jemanden wie mich, der es mehrmals gelernt hat, aber immer noch verwirrt ist? Wenn ich es lerne, verstehe ich es immer, aber nachdem ich es gelernt habe, vergesse ich es. Nun, tatsächlich habe ich noch nicht genug geübt. Der sogenannte Rückblick auf die Vergangenheit und das Erlernen des Neuen kann heute ein Rückblick auf diesen stolzen regulären Ausdruck sein.

Warum brauchen wir reguläre Ausdrücke? Tatsächlich liegt es daran, dass Computer dumm sind (das habe ich nicht gesagt). Wenn wir uns beispielsweise 123456@qq.com ansehen, handelt es sich um eine E-Mail-Adresse, aber der Computer erkennt sie nicht, also haben wir sie Verwenden Sie einige Sprachen, die Computer verstehen, um Regeln zu formulieren und ihnen mitzuteilen. Diejenige, die dieser Regel entspricht, ist ein Postfach, sodass der Computer uns helfen kann, das entsprechende Ding zu finden. Daher werden reguläre Regeln verwendet, um Regeln festzulegen, um einige von uns benötigte Vorgänge abzuschließen, z. B. die Anmeldeüberprüfung, die Suche nach bestimmten Dingen usw. Es ist überflüssig, zu viel zu sagen. Kommen wir direkt zum Thema.

Regular definieren:


1 var re = new RegExp("a"); //RegExp object. Parameter sind die Regeln, die wir aufstellen möchten. Es gibt eine Situation, in der diese Methode verwendet werden muss, die im Folgenden erwähnt wird.

2 var re = /a/; // Die Abkürzungsmethode wird für eine bessere Leistung empfohlen. Sie darf nicht leer sein, da sie sonst als Kommentar betrachtet wird

Reguläre, häufig verwendete Methoden

1 test(): Findet Inhalte, die regulären Regeln in einer Zeichenfolge entsprechen. Wenn sie gefunden werden, wird „true“ zurückgegeben, andernfalls wird „false“ zurückgegeben.

Verwendung: regular.test(string)

Beispiel: Bestimmen Sie, ob es sich um eine Zahl handelt

var str = '374829348791';


var re = /D /; // D steht für Nicht-Ziffer

if( re.test(str) ){ // Gibt true zurück, was bedeutet, dass eine Nicht-Ziffer gefunden wurde in der Zeichenfolge.

alert('Nicht alle Zahlen');

}else{

alert('Alle Zahlen');

}

Es gibt viele Symbole in regulären Ausdrücken, die unterschiedliche Bedeutungen darstellen und verwendet werden, um es uns zu ermöglichen, verschiedene Regeln zu definieren, wie z. B. D oben und die folgenden:

s: Leerzeichen

S: Nicht-Leerzeichen

d: Zahl

D: Nicht-Zahl

w: Zeichen (Buchstabe, Zahl, Unterstrich_ )

W: Beispiele für Nicht-Zeichen: Gibt es Zeichen, die keine Zahlen sind

(Im Folgenden werden einige häufig verwendete Zeichen anhand von Beispielen erläutert und abschließend zusammengefasst.)

2 search(): Suchen Sie nach regulärem Inhalt in der Zeichenfolge und geben Sie die Position zurück, an der er erscheint (beginnend bei 0, wenn mehr als ein Buchstabe übereinstimmt, wird nur die Position des ersten Buchstabens zurückgegeben), wenn die Suche gibt bei Fehler -1 zurück

Verwendung: string.search(regular)

Suchen Sie den Inhalt des zusammengesetzten regulären Ausdrucks in der Zeichenfolge. Groß-/Kleinschreibung ignorieren: i——ignorieren (bei „regulär“ wird standardmäßig die Groß-/Kleinschreibung beachtet. Wenn die Groß-/Kleinschreibung nicht beachtet wird, fügen Sie den Bezeichner i am Ende der regulären Zahl hinzu)

Beispiel: Suchen Sie den Buchstaben b in der Zeichenfolge , und nicht zwischen Groß- und Kleinschreibung

var str = 'abcdef';

var re = /B/i;

// var re = new RegExp('B','i'); Sie können auch

alert( str.search(re) ); // 1

3 match() durchsucht den Inhalt der zusammengesetzten Regel in der Zeichenfolge. Wenn die Suche erfolgreich ist, wird der Inhalt im Format eines Arrays zurückgegeben. Wenn sie fehlschlägt, wird null zurückgegeben.

Verwendung: String.match (regulär)

Quantifikator: + Mindestens eine Übereinstimmung kommt unbestimmt oft vor (Übereinstimmung bedeutet Suchen)

Globale Übereinstimmung: g —— global (Standard in regulären Regeln, die Suche wird beendet, solange der Inhalt der zusammengesetzten Regel durchsucht wird)

Beispiel: Alle Zahlen im angegebenen Format finden, 123, 54, 33, 879 wie folgt finden

var str = 'haj123sdk54hask33dkhalsd879';

var re = /d+/g; // Übereinstimmung mit mindestens einer Zahl und globaler Übereinstimmung . Wenn es sich nicht um eine globale Übereinstimmung handelt, stoppt es, wenn die Nummer 123 gefunden wird. Beim globalen Abgleich wird nur 123 angezeigt. Es wird von Anfang bis Ende nach denjenigen gesucht, die den Regeln entsprechen. Wenn kein Pluszeichen vorhanden ist, lauten die passenden Ergebnisse 1, 2, 3, 5, 4, 3, 3, 879, was wir nicht wollen. Mit dem Pluszeichen gibt es jedes Mal mindestens eine passende Zahl.

alert( str.match(re) ); // [123, 54, 33, 879]


4 replace(): Suchen Sie eine Zeichenfolge, die dem regulären Muster entspricht, und ersetzen Sie sie durch die entsprechende Zeichenfolge. Geben Sie den ersetzten Inhalt zurück.

Verwendung: String.replace(reguläre, neue Zeichenfolge/Rückruffunktion) (in der Rückruffunktion bezieht sich der erste Parameter auf das Zeichen, das jedes Mal erfolgreich übereinstimmt)

|: bedeutet oder.

例子:敏感词过滤,比如 我爱北京天安门,天安门上太阳升。------我爱*****,****上太阳升。即北京和天安门变成*号,

一开始我们可能会想到这样的方法:


var str = "我爱北京天安门,天安门上太阳升。";

var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配

var str2 = str.replace(re,'*');

alert(str2) //我爱**,*上太阳升

//这种只是把找到的变成了一个*,并不能几个字就对应几个*。

   

要想实现几个字对应几个*,我们可以用回调函数实现:


var str = "我爱北京天安门,天安门上太阳升。";

var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配

var str2 = str.replace(re,function(str){

alert(str); //用来测试:函数的第一个参数代表每次搜索到的符合正则的字符,所以第一次str指的是北京 第二次str是天安门 第三次str是天安门

var result = '';

for(var i=0;i

result += '*';

}

return result; //所以搜索到了几个字就返回几个*

});

alert(str2) //我爱*****,***上太阳升

//整个过程就是,找到北京,替换成了两个*,找到天安门替换成了3个*,找到天安门替换成3个*。

replace是一个很有用的方法,经常会用到。

正则中的字符

():,小括号,叫做分组符。就相当于数学里面的括号。如下:


var str = '2013-6-7';

var re1 = /\d-+/g; // 全局匹配数字,横杠,横杠数量至少为1,匹配结果为: 3- 6-

var re1 = /(\d-)+/g; // 全局匹配数字,横杠,数字和横杠整体数量至少为1 3-6-

var re2 = /(\d+)(-)/g; // 全局匹配至少一个数字,匹配一个横杠 匹配结果:2013- 6-

同时,正则中的每一个带小括号的项,都叫做这个正则的子项。子项在某些时候非常的有用,比如我们来看一个栗子。

例子:让2013-6-7 变成 2013.6.7


var str = '2013-6-7';

var re = /(\d+)(-)/g;

str = str.replace(re,function($0,$1,$2){

//replace()中如果有子项, //第一个参数:$0(匹配成功后的整体结果 2013- 6-),

// 第二个参数 : $1(匹配成功的第一个分组,这里指的是\d 2013, 6)

//第三个参数 : $1(匹配成功的第二个分组,这里指的是- - - )

return $1 + '.'; //分别返回2013. 6.

});

alert( str ); //2013.6.7

//整个过程就是利用子项把2013- 6- 分别替换成了2013. 6. 最终弹出2013.6.7

match方法也会返回自己的子项,如下:


var str = 'abc';

var re = /(a)(b)(c)/;

alert( str.match(re) ); //[abc,a,b,c]( 返回的是匹配结果 以及每个子项 当match不加g的时候才可以获取到子项的集合)

[] : 表示某个集合中的任意一个,比如 [abc] 整体代表一个字符 匹配 a b c 中的任意一个,也可以是范围,[0-9] 范围必须从小到大 。

[^a] 整体代表一个字符 :^写在[]里面的话,就代表排除的意思

例子:匹配HTML标签 比如

hahahah
找出标签

var re = /<[^>]+>/g; Passen Sie mindestens eine nicht rechte Klammer in die Mitte der linken Klammer (da Attribute und andere Dinge darin sind). das Tag), dann Übereinstimmung mit der rechten Klammer var re = /<[wW]+>/g; // Übereinstimmung mit mindestens einem Zeichen oder Nicht-Zeicheninhalt in der Mitte der linken Klammer und dann Übereinstimmung mit der rechten Klammer // Tatsächlich bedeutet es, die linke Klammer zu finden, und dann kann mindestens ein Zeichen in der Mitte stehen. Ein Inhaltsteil stellt ein Tag dar, bis Sie die rechte Klammer finden.

Escape-Zeichen

s: Leerzeichen

S: Nicht-Leerzeichen

d: Zahl

D: Nicht-Zahl

w: Zeichen (Buchstabe, Zahl, Unterstrich)

W: Nicht-Zeichen

: Beliebiges Zeichen

: Echter Punkt

b: unabhängiger Teil (Anfang, Ende, Leerzeichen)

B: nicht unabhängiger Teil

Werfen wir einen Blick auf die letzten beiden:


var str = 'onetwo';

var str2 ="one two";

var re = /oneb/; // hinter e Muss sein unabhängig und kann Start, Leerzeichen oder Ende sein

alert( re.test(str) ); //false

alert( re.test(str2) );// true

Beispiel: Schreiben Sie eine Funktion, um Knoten nach Klassennamen abzurufen:

Möglicherweise haben wir eine solche Funktion schon einmal gesehen:


function getByClass(parent,classname){

if(parent.getElementsByClassName){

return parent.getElementsByClassName(classname );

}

else{

var results = new Array();//Wird zum Speichern aller abgerufenen Elemente mit Klassenbox verwendet

var elems = parent. getElementsByTagName("*");

for(var i =0;i

if(elems[i].className= =classname){

results.push(elems[i]);

}

}

Return Results;

}

}

Tatsächlich liegt ein Problem vor, wenn beispielsweise zwei Klassen in einem Tag vorhanden sind oder Klassen mit demselben Namen vorhanden sind ,

,
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