正则表达式快忘完了,复习以下。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
3. 替换
正则表达式规则
元字符
. 匹配任何单个字符,除了换行
d 数字 D 非数字
w 数字 字母 下划线 W 非
s 空白 S 非空白
换行
制表符
范围-- 匹配的是一个字符
[0-9] [0123] [a-z] [A-Z] 匹配的是一个字符
| 或者 w|d
量词 -只修饰一个字符
a+ 1个或多个a
a? 1个或0个a
a* 0个或多个a
var str = "aabbccddeeff";
var regRex = /aa*b/;
console.log(regRex.test(str));
a{x} x个n
a{x,} 至少x个a
a{x,y} x-y个a
开始结束
^a 以a开始
a$ 以a结束
() 看成一个整体
匹配汉字
[u4e00-u9fa5]
var str = "中华人民共和国";
var regRex = /[u4e00-u9fa5]{7}/;
console.log(regRex.test(str));
参数
i 忽略大小写
g 全局匹配
验证电子邮箱
^w+@w+.w+(.w+)?$/
验证URL
/^w+(s)?://(w+.)+w+(/(w+)?(.w+)?)*$/
替换replace
所有的逗号替换成句号abc,efg,123,abc,123,a
修改成绩,全改成100分
var jsonStr = '[{"name":"张三",score:80},{"name":"张三",score:90},{"name":"张三",score:81}]';
把, , . 和。都改成 。
var str = "“你饿了,调我们的粮进京。你渴了.调我们的水进京。高考了,你特么想尽千方百计不让我们的孩子进京。为什么?!” 我们呼吁:全国一张卷,一个录取线!愿赌服输!最近高考方案闹得沸沸扬扬,其实大家就是要的公平竞争!同样都是孩子,同样的国家,同样的教育!为何不同的待遇?";
去掉前后空格,封装成函数
正则提取 match返回数组
提取工资
var str = "张三:1000,李四:5000,王五:8000。";
提取email地址
var str = "123123@xx.com,fangfang@valuedopinions.cn 286669312@qq.com 2、emailenglish@emailenglish.englishtown.com 286669312@qq.com...";
分组提取
提取email中的每一部分
var str = "123123@xx.com";
var reg = /(w+)@(w+).(w+)(.w+)?/;
var array = str.match(reg);
//获取分组的数据 ()是分组
console.log(RegExp.$1);
console.log(RegExp.$2);
console.log(RegExp.$3);
分组练习
var str = "5=a, 6=b, 7=c";
str = str.replace(/(d)=(w)/g, "$2====$1");
console.log(str);
exec
exec 只匹配第一项,可以使用分组匹配 加/g 无效
如果要匹配多项 使用str.match() 结合正则的全局模式 /g
正则相关的方法
正则对象的 test exec
字符串的 replace search match split
贪婪模式 非贪婪模式
<.+> 默认是贪婪模式
<.+?> 非贪婪模式