Heim > Web-Frontend > js-Tutorial > Vertiefendes Verständnis der Analyse der Gruppierung regulärer JS-Ausdrücke

Vertiefendes Verständnis der Analyse der Gruppierung regulärer JS-Ausdrücke

不言
Freigeben: 2018-07-11 09:49:18
Original
1581 Leute haben es durchsucht

这篇文章主要介绍了关于深入理解JS正则表达式之分组的解析,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

分组

在使用正则的时候,有时候会想要匹配一串字符串连续出现多次的情况,比如:我想匹配字符串Byron连续出现3次的情况。

有些人会直接写:

Byron{3}
Nach dem Login kopieren

但是,这种情况仅仅会匹配Byro加上三个n,显然,这样是错误的。

要想实现之前的需求,我们需要使用正则表达式的分组功能:使用()可以达到分组的功能,使量词作用于分组。所以,如下正则可以顺利匹配Byron三次

(Byron){3}
Nach dem Login kopieren

JS中的|的含义是或,在正则中,我们也可以使用|达成或的效果。比较常用的或的写法是:

Byron | Casper
Nach dem Login kopieren

即,Byron或Casper二选一。

还有一种用法是配合分组使用:

let text = 'ByronsperByrCasper'

let reg = /Byr(on|Ca)sper/g     // 匹配Byronsper或ByrCasper

text.replace(reg, 'X')      // XX
Nach dem Login kopieren

反向引用

此时,我们有一个需求,将一种格式的时间字符串:yyyy-MM-DD转为MM/DD/yyyy类型格式字符串。

这个问题的难点在于,不仅要将-转为/还要将年月日的位置进行调换。由于年月日的数值是不固定的,没法直接转换为固定数值。这时,我们可以使用反向引用解决这个问题。

反向引用是分组中的一个重要的高级语法,主要用来解决分组变量的问题。

什么叫分组变量?分组变量就是通过分组匹配到的值,正则表达式将其转为了一种可以被调用的变量。而调用这个变量也很简单$nn代表着分组的序号,值得一提的是,序号是从1开始,而不是从0开始。

通过反向引用可以很轻松的解决上面那个问题:

let text = '2018-07-09'

let reg = /(\d{4})-(\d{2})-(\d{2})/g

/*
    $1是(\d{4})的匹配内容,代表yyyy
    $2是第一个(\d{2})的匹配内容,代表MM
    $3是第二个(\d{2})的匹配匹配内容,代表DD
*/
text.replace(reg, '$2/$3/$1')   // 07/09/8
Nach dem Login kopieren

忽略分组

当不希望捕获某些分组,只需要在分组内加上?:即可以

(?:Byron).(ok)
Nach dem Login kopieren

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网! 

 相关推荐:

深入理解JS正则表达式之贪婪模式与非贪婪模式的解析

深入理解JS正则表达式之量词的解析

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage