案例一我们将把所有的双引号替换单引号:

解析匹配了一个"中加除了引用的除了“以外的东西",用'$1'代替,在这里$1就是([^"]*)

name = '"a", "b"';
console.log(name.replace(/"([^"]*)"/g, "'$1'"));

[^"]除了引号以外的所有数

//案例二 我们将把字符串中所有单词的首字母都转换为大写:

方法一:找到aaa或bbb吧aaa替换为Aaa

name = 'aaa bbb ccc';
var rep = /(\w)+/g
var str = name.replace(rep,function(word,$1){
	//console.log($0);
	return word.substring(0,1).toUpperCase()+word.substring(1);
})
console.log(str) 
//Aaa Bbb Ccc 为什么是中间会有空格明明我们没写空格,为什么呢?哦因为他只是替换了一些文本那些空格孩子那个地方是没有改变的

方法二:找到单词的边界a,b,c把他们替换为A,B,C

name = 'aaa bbb ccc';
	var rep = /\b(\w)/g;
	var str = name.replace(rep, function(word,$1){
		console.log($1.toUpperCase());
		return $1.toUpperCase();
})
console.log(str);

案例三:给一个连字符串例如:get-element-by-id转化成驼峰形式。

方法一$1等于-;$2等于\w+,直接用首字母大写的更改好的\w+替换原来匹配我们的rep就可以了

var str = "get-element-by-id";
var rep = /(-)(\w+)/g;
var da = str.replace(rep,function(word,$1,$2){
	//console.log($2.substring(0,1).toUpperCase() + $2.substring(1)); //Element By Id
	    return $2.substring(0,1).toUpperCase() + $2.substring(1);
	})
console.log(da); //getElementById

方法二:直接找到-w吧他这个字符串slice剪切在把那个剪切后的值变大

这个题目我是自己先写了一遍用的上面的方法,在看的答案!我透,还可以这样,我终于知道slice的厉害的地方了呵呵

var str = "get-element-by-id";
var reg = /-\w/g; // 匹配横杆以及之后的一个字符,全局匹配
console.log(str.replace(reg, function($0) {
	return $0.slice(1).toUpperCase();
	// 匹配到到是-e -b -i 形式截取后一个字符转成大写 
}));

案例四:匹配一年中的12个月

解析:主要凸显了个分类中的(|)的用法和^$的用法

// var str = "04";
// var str2 = "12";
// var str3 = "aa12";
// var reg = /^(0[1-9]|1[1-2])$/
// console.log(reg.test(str));//true
// console.log(reg.test(str2));//true
// console.log(reg.test(str3));//false 应为必须是^$中的那几个数

案例五:分割数字每三个以一个逗号划分

解析:解析找到那三个数并且用那三个数加以个,给其替换

var str = "12345678901";
var reg = /\d{3}/g;
var da = str.replace(reg,function(word){
	//console.log(word);
	word = word+",";
	return word;
})
console.log(da);

案例六最难的来了

先写一个量词的用法

?=n

匹配任何其后紧接指定字符串 n 的字符串。

?!n

匹配任何其后没有紧接指定字符串 n 的字符串。

 

解析:匹配一个is后面跟的是空格加all;
           当问号前面什么都没写的时候代表空的位置:对其后紧跟 " all" 的 "is" 进行全局搜索:大家看到这个匹配任何吗?就是把所有符合的都会找到(一般这个用发都是找"",除非?前面有字母如下的is就是说is后面有" all",没is就是" all"前面的"")

var str="Is this all there is";
var patt1=/is(?= all)/g;
console.log(str.match(patt1));

好来了:科学小数点从后往前3个数打一个点,看的和案例五一样其实不一样一个从前一个从后

var str = "100000000000000";
 var reg = /(?=(\B)(\d{3})+$)/g; //有一个空(什么都没写就是空)后面不是单词边界且跟的是从末尾开始是3的倍数位置,的所有可能因为?=n会找全局,全部的
 var da = str.replace(reg,function(word,$1){
 	console.log(word); //返回是是5个空
 	word = ",";
 	return word;
 				
})
console.log(da);

为什么要\B 因为可能会在最前面出现打点

好了我把我开始的错误想法写一下

var str = "100000000000000";
    var reg = /(\B)(\d{3})+$/g; //
    var da = str.replace(reg, function (word) {
      console.log(word); //返回是是5个空
      word = "." + word;
      return word;
    })
    console.log(da); 100.000000000000

这里返回的永远是//100.000000000000为什么呢因为正则匹配的有一个原则就贪婪匹配当出现+,*,?的时候当我有条件多匹配的时候就我尽可能的多匹配(只出现一次)而不是说把所有的可能都返回出来,所以这个就是与有没有用?=n的区别,?=n会把所有可能全部返回出来

好了,就先这样吧,吧这些搞懂了就差不多了,如果没看懂看以看下这个,在回过头啦在看一遍,我以后要是有看到好的例子我在补充,也欢迎大家给提供