3.5 正则表达式
3.5.1 概念
- 常被用来检索、替换那些符合某个模式规则的文本
- 正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来
3.5.2 作用
- 1.匹配
判断给定字符串是否满足正则表达式的过滤逻辑 - 2.提取
可以通过正则表达式,从字符中获取需要的特定部分 - 3.替换
正则有很强大的字符串替换能力
3.5.3 特点
- 1.灵活性、逻辑性和功能性非常的强
- 2.运用广,比如:爬虫
- 3.对刚接触的人来说,比较晦涩难懂
3.5.4 组成
- 1.普通字符 ‘hello’,‘123’
- 2.元字符 :正则表达式中有特殊意义的字符
\d:匹配数字 \w:匹配字母数字或下划线
3.5.5 元字符
- 1.在线测试网站:https://c.runoob.com/front-end/854
- 2.常用元字符串
- 3.限定符
- 4.其他
3.5.6 常用案例
-
1.用户名
^ [a-z0-9_-]{3,16}
-
2.密码
^ [a-z0-9_-]{6,18}
-
3.手机号码
^ (13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
-
4.邮编
[1-9]\d{5}$
-
5.验证日期
^\d{4}-\d{1,2}-\d{1,2}
-
6.验证邮箱
^\w+@\w+\.\w+$
3.5.7 JS中使用正则表达式
-
1.创建正则对象
法1:var reg = new RegExp('ab[a-z]','i'); 法2:var reg = /ab[a-z]/i;
标志:
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
-
2.与正则表达式相关的方法
针对RegExp对象test( )匹配 exec( )提取 提取一个内容
针对String对象
replace( )替换
splic( ) 切割
search( )搜索
-
3.匹配
匹配手机号:var phonenum = '18569234596'; var phoneReg = /^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9] |18[0|1|2|3|5|6|7|8|9])\d{8}$/; console.log(phoneReg.test(phonenum)); // true
-
4.提取
提取qq号码:var qq = '小廖:1111111,大料:2222222,老廖:3333333'; var reg = /\d+/g; do{ var content = reg.exec(qq); if(content){ console.log(content[0]); } }while(content)
-
5.替换
替换所有空白字符:var str = ' i love you ! '; str = str.replace(/\s/g,'*'); console.log(str); // *******i****love**you***!*******
替换所有开头和结尾的空格:
var str = ' i love you ! ';
console.log(str.trim());
- 6.贪婪和非贪婪模式
贪婪模式:尽可能多的匹配
非贪婪模式:尽可能少的匹配
语法:将?紧跟在任何量词*、+、?或{}的后面,将会使量词变为非贪婪的(匹配尽可能少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。