标签:日期格式 简洁 正则表达 方法 文章 通过 注意 dev pre
通俗来说,我理解的分组就是在正则表达式中用()包起来的内容代表了一个分组,像这样的:
var reg = /(\d{2})/
reg.test(‘12‘); //true
这里reg中的(/d{2})就表示一个分组,匹配两位数字
一个分组中可以像上面这样有一个具体的表达式,这样可以优雅地表达一个重复的字符串
/hahaha/
/(ha){3}/
这两个表达式是等效的,但有了分组之后可以更急简洁。
体格分组中还可以有多个候选表达式,例如
var reg = /I come from (hunan|hubei|zhejiang)/;
reg.test(‘I come from hunan‘); //true
reg.test(‘I come from hubei‘); //true
也就是说在这个分组中,通过|隔开的几个候选表达式是并列的关系,所以可以把这个|理解为或的意思
分组有四种类型
分组在正则中还算使用的比较广泛的,我们常用的是捕获型分组
var reg = /(\d{4})-(\d{2})-(\d{2})/; var dateStr = ‘2018-04-18‘; reg.test(dateStr); //true RegExp.$1 //2018 RegExp.$2 //04 RegExp.$3 //18
var dateStr = ‘2018/04/18‘; var reg = /(\d{4})\/(\d{2})\/(\d{2})/; dateStr = dateStr.replace(reg, ‘$1-$2-$3‘) //"2018-04-18"
var reg = /(\w{3}) is \1/ reg.test(‘kid is kid‘) // true reg.test(‘dik is dik‘) // true reg.test(‘kid is dik‘) // false reg.test(‘dik is kid‘) // false
var reg = /(\w{3}) is \6/; reg.test( ‘kid is kid‘ ); // false reg.test( ‘kid is \6‘ ); // true
var reg = /(?:\d{4})-(\d{2})-(\d{2})/ var date = ‘2012-12-21‘ reg.test(date) RegExp.$1 // 12 RegExp.$2 // 21
var reg = /kid is a (?=doubi)/ reg.test(‘kid is a doubi‘) // true reg.test(‘kid is a shabi‘) // false
var reg = /kid is a (?!doubi)/ reg.test(‘kid is a doubi‘) // false reg.test(‘kid is a shabi‘) // true
reg = /(kid is a (?=doubi))/
reg.test(str)
RegExp.$1 // kis is a
```
也就是说非捕获型分组匹配到的字符串任然会被外层分组匹配到,而前瞻型不会,所以如果你希望在外层分组中不匹配里面分组的值的话就可以使用前瞻型分组了。
标签:日期格式 简洁 正则表达 方法 文章 通过 注意 dev pre
原文地址:https://www.cnblogs.com/wancheng7/p/8906015.html