<script>
// 1.匹配 协议、域名、端口号
var url = "http://192.168.0.61:8080/touch/index.html?game=AB01";
var reg = new RegExp(/(\w+):\/\/([^/:]+)(:\d*)?/);
var result = url.match(reg);
console.log(result); // 结果:Array[4]
console.log(result[0]); // 结果:http://192.168.0.61:8080
console.log(result[1]); // 结果:http
console.log(result[2]); // 结果:192.168.0.61
console.log(result[3]); // 结果::8080
console.log(result.index); // 结果:0
console.log(result.input); // 结果:http://192.168.0.61:8080/touch/index.html?game=AB01
// 解析:数组的0元素得到的是整个正则表达式匹配得到的结果,也是最终我们想要的结果。
// 1~3是三个子表达式的结果,即每个()匹配的结果。
// 1:(\w+):\/\/ 匹配“://”前的字符串(包括数字、字母、下划线和加号本身字符),配置“/”需要用转义符所以需用”\/”;如若需匹配“(”就应该用”(“。
// 2:([^/:]+)匹配除”/”和”:”的字符。
// 3:(:\d*)?, “(:\d*)”就表示匹配:以及:后面的多个数字,即端口号。”?”表示匹配这个子表示式一次或者不匹配。也就是说被匹配的字符串不含端口号也行。
</script>
<script>
// 2.匹配 文字、图片、视频
var str1 = "我是文本<img src='./js/01.jpg'><video src='./js/01.mp4'>浮生若梦<img src='./js/02.jpg'><video src='./js/02.mp4'>"
var reg = /[\u4e00-\u9fa5]/g;
var arrl = str1.match(reg);
var text = arrl.join("");
console.log(text); //结果: 我是文本浮生若梦
var imgReg = /<img.*?(?:>|\/>)/gi;
var arr1 = str1.match(imgReg);
var img1 = arr1[0];
var srcReg1 = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
var src1 = img1.match(srcReg1)[0];
var src2 = src1.slice(5,-1);
console.log(src2); //结果: ./js/01.jpg
var videoReg = /<video.*?(?:>|\/>)/gi;
var arr2 = str1.match(videoReg);
var video = arr2[0];
var srcReg2 = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;
var src3 = video.match(srcReg2)[0];
var src4 = src3.slice(5,-1);
console.log(src4); //结果: ./js/01.mp4
</script>