正则中的括号()的用途(匹配子项或是分组)

首先我们前面介绍过,replace()方法中的第二个参数若是回调函数,那么这个回调函数中的参数就是匹配成功后的结果。。。。。,那么有没有考虑回调函数中有多个参数呢?

先举个例子:

<!DOCTYPE>
<html>
<head>
    <meta charset='utf-8'> 
    <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
    var date='2015-8-7';
    var re=/(\d+)(-)/g;
    date.replace(re,function(a1,a2,a3){
        /*alert(a1);*/
        alert(a2);
        /*alert(a3);*/
    });
};
</script>
<body>
</body>
</html>

上面的例子需要你分别查看a1,a2,a3的值,你会发现一些规律
单独查看a1:2015- 8-
单独查看a2:2015 8
单独查看a3:- -
把三个参数形象的打个比方吧,a1相当于母亲,a2是大儿子,a3是小儿子,每个儿子都继承了妈妈的一部分基因
a1是var re=/\d+-/g; 这个正则的结果
a2是var re=/(\d+)(-)/g;左边第一个括号的结果
a2是var re=/(\d+)(-)/g;左边第二个括号的结果

说了这么多参数的用途,下面我们来实现输出:2015.8.7
方法一:对儿子操作

<!DOCTYPE>
<html>
<head>
    <meta charset='utf-8'> 
    <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
    var date='2015-8-7';
    var re=/(\d+)(-)/g;
    var a=date.replace(re,function(a1,a2,a3){
        return a2+'.';
    });
    alert(a);
};
</script>
<body>
</body>
</html>

方法二:对母亲操作

<!DOCTYPE>
<html>
<head>
    <meta charset='utf-8'> 
    <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
    var date='2015-8-7';
    var re=/(\d+)(-)/g;
    var a=date.replace(re,function(a1,a2,a3){
        return a1.substring(0,a1.length-1)+'.';
    });
    alert(a);
};
</script>
<body>
</body>
</html>

学了正则中的replace()方法的回调函的多个参数与括号之间的关系,瞬间觉得正则复杂了起来。。。。

转载于:https://www.cnblogs.com/angus-jiang/p/4440614.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值