0x01 概括
1. 概念
a. 官方解释:
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
搜索模式可用于文本搜索和文本替换。
b. 白话解释:
拿来匹配文本的,可更方便地用来搜索或者替换。
2. 为什么要学习正则表达式
a. 下面的对比例子可看出,正则表达式非常方便
需求:找出定义的字符串里面的数字
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript"> //定义所需要搜索的字符串 var str = 'wechat:shaonaiyi888,520777'; //方法1、不使用正则表达式 function findNum(str) { var tmp = '', arr = []; for(var i = 0; i < str.length; i++) { var current = str[i]; if(!isNaN(current)) { tmp += current; } else { if(tmp) { arr.push(tmp); tmp = ''; } } } if(tmp) { arr.push(tmp) } return arr; } console.log("不使用正则表达式:" + findNum(str)) //"不使用正则表达式:888,520777" //方法2、使用正则表达式 var reg = /\d+/g; console.log("使用正则表达式:" + str.match(reg)) //"使用正则表达式:888,520777" </script> </head> <body> 邵奈一的CSDN技术博客:https://blog.csdn.net/shaock2018 </body> </html>
0x02 正则表达式的创建方式
语法:
/正则表达式/修饰符(可选)
修饰符:
1. 字面量创建方式
a. 格式:var reg = /正则表达式主体/修饰符
b. 实例:
var reg = /\d+/g;
2. 实例创建方式
a. 格式:var reg = new RegExp(正则表达式,修饰符);
b. 实例:
var reg = new RegExp('\\d');
3. 两种创建方式的区别
a. 实例创建方式可进行字符串拼接,字面量创建方式则不行
var regParam = 'ny'; var reg1 = new RegExp(regParam+'1'); var reg2 = /regParam/; console.log(reg1); // /ny1/ console.log(reg2); // /regParam/
b. 实例创建方式特殊含义的字符需要转义,字面量创建方式不需要转义
var reg1 = new RegExp('\d'); // /d/ var reg2 = new RegExp('\\d') // /\d/ var reg3 = /\d/; // /\d/
0x03 正则表达式模式
1. 表达式
a. 方括号用于查找某个范围内的字符:
2. 元字符
a. 元字符是拥有特殊含义的字符:
3. 量词
a. 量词:
4. 分组符
0x04 实用例子
1. 入门例子与详解
var str1 = 'Hi,hi,hi shaonaiyi,Hello'; //g:修饰符,表示全局匹配;\b是一个元字符,代表单词边界,匹配单词的开头和结尾。 //1、实例创建方式: var reg1 = new RegExp("\\bhi\\b", "g"); //2、字面量创建法: reg2 = /\bhi\b/gi; console.log(str1.match(reg1)); //"hi,hi" console.log(str1.match(reg2)); //"Hi,hi,hi" //匹配shenzhen,并匹配后面的shaonaiyi var str2 = /\bshenzhen\b.*\bshaonaiyi\b/; var welcome = 'I love shenzhen,shaonaiyi!!'; console.log(welcome.match(str2));//"shenzhen,shaonaiyi"
0xFF 总结
- 正则表达式可以提高我们的效率,更提高我们的代码的质量,不仅仅是JavaScript,java、python、php等等都会使用到正则表达式,所以说,也是非常关键的。
- 正则表达式最常用的作用之一是用于前端,判断邮箱、手机号码、email地址等的格式是否合理,当然还有很强大的功能,自行搜索了解。