正则3:正则表达式中的括号

1、分组

var regex = /(ab)+/g; 

var string = "ababa abbb ababab"; console.log( string.match(regex) ); // => ["abab", "ab", "ababab"]

 

1.1 数据分组提取替换

var regex = /(\d{4})-(\d{2})-(\d{2})/;

var string = "2017-06-12";

console.log(string.replace(regex, `$1$2$3`) );

使用replace函数进行匹配 RegExp 是构造函数的全局属性

var regex = /(\d{4})-(\d{2})-(\d{2})/; 

var string = "2017-06-12”; 

var result = string.replace(regex, function () {   

    return RegExp.$2 + "/" + RegExp.$3 + "/" + RegExp.$1; 

});

console.log(result);

使用replace函数的时候也可以把参数列出来

var regex = /(\d{4})-(\d{2})-(\d{2})/;

var string = "2017-06-12”;

var result = string.replace(regex, function (match, year, month, day) {   

    return month + "/" + day + "/" + year; 

});

console.log(result);

 

1.2 正则中匹配分组

假设有如下需求:匹配如下字符串,且要求前后的分割符号保持一致

var string2 = "2017/06/12”; 

var string3 = “2017.06/12"; 

var regex = /\d{4}(-|\/|\.)\d{2}\1\d{2}/; 

这里正则中的\1 就是表示前面分组中获取到的字符串

 

1.3 引用不存在的分组,会取到反向引用的字符本身

 

1.4 分组后面有量词,会取最后一个

 

 

 

2、分支结构

var regex = /^I love (JavaScript|Regular Expression)$/; 

console.log( regex.test("I love JavaScript") );

console.log( regex.test("I love Regular Expression") );

如果去掉括号

/^I love JavaScript|Regular Expression$/,

匹配字符串是 "I love JavaScript" 和 "Regular Expression",当然这不是我们想要的。

 

 

3、非捕获括号 (?:)

如果只想要括号最原始的功能,不涉及引用或反向引用,在括号最开头加上?:

var regex = /(?:ab)+/g; 

var string = "ababa abbb ababab”; 

console.log( string.match(regex) ); 

// => ["abab", "ab", "ababab"]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值