发新贴  快速回复

正则的替换,根据课件代码:var str = '2013-6-7';要转为2013.6.7;我把return 后面改为$2=“.”为什么不可以额?把$2=“.”重新赋值

Shark
2017-12-21 21:10

<script>

 

//匹配子项 : 小括号 ()  (还有另外一个意思,分组操作)

 

//1+1*2

//(1+1)*2

 

//把正则的整体叫做(母亲)

//然后把左边第一个小括号里面的正则,叫做这个第一个子项(母亲的第一个孩子)

//第二个小括号就是第二个孩子

 

var str = '2013-6-7';

 

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

 

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

//第一个参数:$0(母亲),第二个参数 : $1(第一个孩子)

//,第二个参数 : $1(第二个孩子)

 

//alert( $2 );

 

return $2 = '.';//代码修改部分在这里。。。。。。。。。。。。。。。。。。。。。。。。。。。

                     

 

 

});

 

alert( str );   //2013.6.7

 

</script>

 
2017年2月8日

你写个正则,先不管他里面有没有的小括号,你用replace替换就是正则匹配到的那个整体,如果里面有小括号,不影响,但是小括号匹配到的可以单独提取出来,因为有时候我们需要用,如上面的replace里面的回调函数的参数(第二个开始往后都是)。
上面$1,$2匹配到了小括号里的内容,但是你返回什么,就替换掉正则的整体,也就是$0. 而且能匹配小括号里的正则有很多种方法,我知道的就有4种了,百度一下,js的正则复杂到你可以研究一个星期,然后隔一个星期就全忘,然后又继续,然后又忘,正则没那么简单。现在学,以后忘,反反复复,无穷无尽。
最后,妙味的正则视频是基础,复杂、高度难的正则请百度吧,一言难尽,当你正则学到可以看懂jq的选择器,你就差不多了。

2017-12-22 09:25  回复本帖
Shark

2017年2月8日 2017-12-22 09:25发表的内容:

你写个正则,先不管他里面有没有的小括号,你用replace替换就是正则匹配到的那个整体,如果里面有小括号,不影响,但是小括号匹配到的可以单独提取出来,因为有时候我们需要用,如上面的replace里面的回调函数的参数(第二个开始往后都是)。
上面$1,$2匹配到了小括号里的内容,但是你返回什么,就替换掉正则的整体,也就是$0. 而且能匹配小括号里的正则有很多种方法,我知道的就有4种了,百度一下,js的正则复杂到你可以研究一个星期,然后隔一个星期就全忘,然后又继续,然后又忘,正则没那么简单。现在学,以后忘,反反复复,无穷无尽。
最后,妙味的正则视频是基础,复杂、高度难的正则请百度吧,一言难尽,当你正则学到可以看懂jq的选择器,你就差不多了。

你写个正则,先不管他里面有没有的小括号-----但是小括号有优先计算的意思,这个不需要考虑吗?
2017-12-22 11:18  回复本帖
 
2017年2月8日

Shark 2017-12-22 11:18发表的内容:

你写个正则,先不管他里面有没有的小括号-----但是小括号有优先计算的意思,这个不需要考虑吗?

小括号我知道的有两个意思,第一个是分组,第二个是小括号里的整体,你说的优先计算表示整体吧。
然后正则匹配到的是整个正则,replace就去替换正则这个整体。回调函数返回什么,就正则匹配到的那个就变成什么。
有小括号对正则本身没关系,你把小括号去了,正则也是匹配到那个。除非你用了\1 \2这些
百度吧,妙味那些太基础了。你百度会发现js正则还有更多,以后你正则敲多了,就会了。

2017-12-22 13:12  回复本帖
Shark

2017年2月8日 2017-12-22 13:12发表的内容:

小括号我知道的有两个意思,第一个是分组,第二个是小括号里的整体,你说的优先计算表示整体吧。
然后正则匹配到的是整个正则,replace就去替换正则这个整体。回调函数返回什么,就正则匹配到的那个就变成什么。
有小括号对正则本身没关系,你把小括号去了,正则也是匹配到那个。除非你用了\1 \2这些
百度吧,妙味那些太基础了。你百度会发现js正则还有更多,以后你正则敲多了,就会了。

我想表达的是var re = /\d-+/g;和var re = /(\d-)+/g这样的情况,那加了括号和整体的正则查找内容有区别吧?
2017-12-22 13:37  回复本帖
 
2017年2月8日

Shark 2017-12-22 13:37发表的内容:

我想表达的是var re = /\d-+/g;和var re = /(\d-)+/g这样的情况,那加了括号和整体的正则查找内容有区别吧?
有区别
2017-12-22 20:50  回复本帖
Shark

2017年2月8日 2017-12-22 20:50发表的内容:

有区别
“你写个正则,先不管他里面有没有的小括号,你用replace替换就是正则匹配到的那个整体,如果里面有小括号,不影响,但是小括号匹配到的可以单独提取出来”那你说的“先不管他里面有没有的小括号”那不是还是需要管小括号的,不然正则匹配到的那个整体内容是不一样的额?
2017-12-23 13:40  回复本帖
 
2017年2月8日

Shark 2017-12-23 13:40发表的内容:

“你写个正则,先不管他里面有没有的小括号,你用replace替换就是正则匹配到的那个整体,如果里面有小括号,不影响,但是小括号匹配到的可以单独提取出来”那你说的“先不管他里面有没有的小括号”那不是还是需要管小括号的,不然正则匹配到的那个整体内容是不一样的额?
我这句话是针对你上面那个问题的。你上面那个问题不是想不通吗?
2017-12-23 15:41  回复本帖
Shark

2017年2月8日 2017-12-23 15:41发表的内容:

我这句话是针对你上面那个问题的。你上面那个问题不是想不通吗?
嗯,大概明白了就是把replace()里的回掉函数的返回值替换,原先正则re的值对吧?
2017-12-23 16:49  回复本帖
 
2017年2月8日

Shark 2017-12-23 16:49发表的内容:

嗯,大概明白了就是把replace()里的回掉函数的返回值替换,原先正则re的值对吧?
2017-12-23 17:01  回复本帖
Shark

2017年2月8日 2017-12-23 17:01发表的内容:

好的,谢谢你
2017-12-23 17:41  回复本帖
登录 后才可以发表回复