javascript正则表达式 详细入门教程

1.什么是正则表达式
定义: 一个用来搜索、匹配、处理一些符合特定语法规则的一个强大的字符串处理工具 。
用途: 进行特定字符和字符串的搜索
替换字符串中指定的字符或字符串
验证字符串是否符合需求
2.为什么使用正则表达式?
大多数时候做开发其实不用正则表达式也能完成开发,但是学会了正则表达式可以帮助我们更加快速开发 。
这是一个栗子:
str = "";
将上面的字符串中的数字全部提取出来保存为数组,要求相连的数字保存为一个值
最终答案应该为: [213,456,412,987,1]
我们先不使用正则表达式去提取数据:
let testStr = "sad213jkls456poi412poippsd987a1";let arr = [];let tempStr ="";for(let i=0; i< testStr.length;i++){let n = testStr.charAt(i);if(n>=0 && n<=9){//如果n是数字tempStr+=n;//验证最后的数字// if(i == testStr.length-1){//if(tempStr) arr.push(tempStr);//tempStr = "";// } }else{//不是数字将temlStr push到arr中,并清空tempStr重新计算if(tempStr) arr.push(tempStr);tempStr = "";}}if(testStr) arr.push(tempStr); //验证最后的数字console.log(arr)
接下来使用正则表达式验证:
let testStr = "sad213jkls456poi412poippsd987a1";let arr = testStr.match(/\d+/g);console.log(arr)
我那个去,一句话就能提取了,牛x!
3.正则表达式的书写规则
//正则的书写方法//1.字面量写法 优点:书写方便简介,缺点: 不支持变量let re = /abc/;//2.构造函数形式优点:支持变量,缺点: 需要注意字符转义规则let re2 = new RegExp('abc'); //使用new
4.元字符 -- 有特殊意义的标识
\d : 匹配数字
\w : 匹配数字、字母、下划线
\s :查找空白字符
\D :查找非数字字符 。
\W : 匹配除了数字、字母、下划线
\S : 查找非空白字符 。
\b :匹配单词边界 。
\B :匹配非单词边界 。
//元字符 有特殊含义的标识let testStr = "sdasda-a123-sifah12300a.sadmn"//假如我们要查找字符串中出现的第一个数字,并且知道该数字为1,可以使用indexOfconsole.log(testStr.indexOf('1'));//但是如果我们不知道该数字是多少呢?let re = /\d/; // \d 表示匹配数字console.log(testStr.match(re)); //返回一个数组,包括第一个数字出现的位置,值,还有操作的字符串
//空白字符 \s(包括空格,制表符,特殊空白字符等)let testStr = "我的左边有空白,右边还是 有空白";let re = /\s/g; //匹配所有空白字符 let re2 = /^\s+/g; //匹配开头的空白字符let re3 = /\s+$/g; //匹配结尾的空白字符let re4 = /^\s+ | \s+$/g; //匹配开头和结尾的空白字符let re5 = /[^\s+]\s+[^\s+$]/g; //匹配字符串中间空白字符console.log('('+testStr+')');//(我的左边有空白,右边还是 有空白)//去除字符串的所有空白字符console.log('('+testStr.replace(re,"")+')');//(我的左边有空白,右边还是有空白)//去除开头的空白字符console.log('('+testStr.replace(re2,"")+')');//(我的左边有空白,右边还是 有空白)//去除结尾的空白字符console.log('('+testStr.replace(re3,"")+')');//(我的左边有空白,右边还是 有空白)//去除字符串开头和结尾字符console.log('('+testStr.replace(re4,"")+')');//(我的左边有空白,右边还是 有空白)//去除字符串中间的字符console.log('('+testStr.replace(re5,"")+')');//(我的左空白,右边还空白)
//单词边界let testStr = "active act sky";//匹配act let re = /act/;//匹配单独的act 不匹配active let re2 = /act\b/;console.log(testStr.match(re));//act", index: 0, input: "active act sky"...console.log(testStr.match(re2)); //"act", index: 7, input: "active act sky" ..//匹配左右都不属于单词边界的't'let testStr2 = "act active sky";let re3 = /\Bt\B/;console.log(testStr2.match(re3)); //"t", index: 6, input: "act active sky"...