JavaScript —— 字符串中使用正则表达式

  1 <!DOCTYPE html>
  2 <html >
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>009字符串中使用正则表达式</title>
  6     <!-- 
  7         正则表达式中:g 表示的是全局模式
  8         正则表达式中:i 表示的是忽略大小写
  9         exec()方法 : 指在一个指定字符串中执行一个搜索匹配。返回一个结果数组或 null
 10 
 11     -->
 12     <script>
 13         /* 1、把一段字符串里面的数字提取出来
 14             var str = "中国移动:10086,中国联通:10010,中国电信:100000";
 15                 // 把里面所有的数字全部显示出来
 16             var array = str.match(/\d{5}/g);
 17             console.log(array);*/
 18         
 19 
 20         // 2、提取字符串中的邮箱
 21            // var str1 = "123@xx.com,fangfang@valuedopinions.cn 285535644@qq.com2、    emailenglish.emailenglish.com 285535644@qq.com...";
 22            //     // \w 匹配单个的非特殊符号(_)等价于[0-9a-zA-Z_] 
 23            //     // +表示前面表达式出现1次或多次
 24            // var array1 = str1.match(/\w+@\w+\.\w+(\.\w+)?/g);
 25            // console.log(array1);
 26 
 27         // 3、提取组正则表达式对象.$3
 28                // 提取日
 29            // var str2 = "2017-11-12";
 30            // var array2 = str2.match(/(\d{4}[-])(\d{2}[-])(\d{2})/g);
 31            // // console.log(array2);
 32            // // 正则表达式对象.$3 那正则表达式中的第3组
 33            // console.log(RegExp.$3);
 34             
 35 
 36         // 4、匹配邮箱字符串中的各个部分
 37            // var email = "liusuyu@itcast.com.cn";
 38            // email.match(/([0-9a-zA-Z_.-]+)[@]([0-9a-zA-Z_-]+)(([.][a-zA-Z]+){1,2})/);
 39            // //[]  匹配其中的任意字符
 40            // // +  1~多
 41            // console.log(RegExp.$1);// 用户名
 42            // console.log(RegExp.$2);// itcast
 43            // console.log(RegExp.$3);// .com.cn
 44 
 45 
 46         // 5、使用replace()在全局替换字符串
 47            // var str = "小苏好帅,真的是太帅了,帅,就是很帅!";
 48            // str1 = str.replace(/帅/,"好玩");
 49            // //对字符串进行全局匹配
 50            // str2 = str.replace(/帅/g,"好玩");
 51            // // replace(/参1/,"参2") 参1:正则表达式中的字符 参2:参1要替换的字符
 52            // console.log(str1);//小苏好好玩,真的是太帅了,帅,就是很帅!
 53            // console.log(str2);//小苏好好玩,真的是太好玩了,好玩,就是很好玩!
 54 
 55 
 56         //6、在字符串全局去掉所有空格
 57             // var str ="  lalalala   ,xixixixi   ";
 58 
 59             // str1 = str.trim();//去掉字符串前后空格
 60             // console.log("----"+str1+"----"); //----lalalla   ,xixixix----
 61 
 62             // str2 = str.replace(/\s+/,"");
 63             // console.log("----"+str2+"----");//----lalalala   ,xixixixi   ----
 64 
 65             // str3 = str.replace(/\s+/g,"");
 66             // console.log("----"+str3+"----");//----lalalala,xixixixi----
 67         //7、将所有的Hh替换成S
 68             // var str = "HhpphH";
 69             // // 方法1:[] 匹配其中的任意字符
 70             // str1 = str.replace(/[hH]/g,"S");
 71             // console.log(str1);// SSppSS
 72             // // 方法2:i 忽略大小写
 73             // str2 = str.replace(/[h]/gi,"S");
 74             // console.log(str2);// SSppSS
 75     
 76             // //*使用正则表达式对象的方式
 77             // var reg  = new RegExp(/[h]/gi);
 78             // var str3 = str.replace(reg,"S");
 79             // console.log(str3);// SSppSS
 80         //
 81         var str = "中国移动:10086,中国联通:10010,中国电信:100000"; 
 82         //正则表达式对象.exec方法传入
 83         var reg = /\d{5}/g;
 84         var array = reg.exec(str);// 通过正则表达式匹配当前字符串
 85 
 86            // console.log(array);
 87            // ["10086", index: 5, input: "中国移动:10086,中国联通:10010,中国电信:100000", groups: undefined]
 88            // console.log(reg.exec(str));
 89            // ["10010"...]
 90            // console.log(reg.exec(str));
 91            // ["10000"...] 
 92            // console.log(reg.exec(str));   // null(多写一个会出现null))
 93            // console.log(reg.exec(str));   // ["10086"...] 
 94            // ...
 95 
 96             while(array!=null){
 97                 // 输出匹配内容
 98                 console.log(array[0]);
 99                 // console.log(array);
100                 array = reg.exec(str);
101             }
102             /*
103             console.log(array[0])输出结果
104              10086
105              10010
106              10000
107              
108             console.log(array)输出结果
109             Array(1)
110                0: "10086"
111                groups: undefined
112                index: 5
113                input: "中国移动:10086,中国联通:10010,中国电信:100000"
114                length: 1__proto__:Array(0)
115             Array(1)
116                0: "10010"
117                groups: undefined
118                index: 16
119                input: "中国移动:10086,中国联通:10010,中国电信:100000"
120                length: 1
121                __proto__: Array(0)
122             Array(1)
123                0: "10000"
124                groups: undefined
125                index: 27
126                input: "中国移动:10086,中国联通:10010,中国电信:100000"
127                length: 1
128                __proto__: Array(0)
129             */
130     </script>
131 </head>
132 <body>
133     
134 </body>
135 </html>