笔记学习出处:渡一教育 Web前端百大项目
转义符号\
转义符号 | 解释 |
---|---|
\n | 换行 |
\r | 行结束符(只是代表有这个意思,一般配合\n一起用) |
\t | 缩进 |
\f | 换页 |
\v | 垂直制表符 |
转义符号\可以实现多行字符串
正则表达式RegExp
作用:匹配特殊字符或判断有没有特殊搭配原则的字符的最佳选择
正则表达式创建方法:
1.
//匹配字符串的规则叫abc
var reg=/abc/;
str="abcd";
//测试一下这个字符串有没有我规定的片段
console.log(reg.test(str)); //true
var reg=new RegExp("abc");
var str="abcd";
console.log(reg.test(str)); //true
特殊:
var reg=/abc/;
var reg1=RegExp(reg);
//如按照上面这种写法,那么reg和reg1就是“同一个”
var reg=/abc/;
var reg1=new RegExp(reg);
//如果按照上面这种写法,那么reg和reg1就是“双胞胎”,但是不是同一个人
正则表达式的三个属性:
修饰符 | 描述 |
---|---|
i | 忽视大小写 |
g | 全局匹配 |
m | 多行匹配(匹配开头结尾) |
//看字符串str有没有符合要求的片段,返回结果只有true和false
reg.test(str);
//可以将所有符合要求的结果返回
str.match(reg);
正则表达式的相关规则:
表达式 | 描述 |
---|---|
[abc] | 查找方括号间的字符,里面是这一位表达式可以取到的范围 |
[^abc] | 全局匹配 |
[0-9] | 查找任何从0-9的数字 |
[a-z] | 查找任何从小写a到z的字符 |
[A-Z] | 查找任何从大写A到Z的字符 |
[A-z] | 查找任何从大写A到小写z的字符 |
[^a] | 不是a |
(abc|bcd) | 或的意思(类似于表达式的区间) |
元字符
元字符 | 描述 |
---|---|
. | 查找单个字符,处理换行和行结束符===[^\r\n] |
\w | \w==[0-9A-z_] |
\W | \W===[^\w] |
\d | \d===[0-9] |
\D | \D===[^\d] |
\s | 空白字符 \s===[\t\n\r\v\f ] |
\S | \S===[^\s] |
\b | \b===单词边界 |
\B | \B===非单词边界 |
量词
量词 | 描述 |
---|---|
n+ | {1,Infinity} |
n* | {0,Infinity} |
n? | {0,1} 0-1个匹配 |
n{x} | {x}x个x个匹配 |
n{x,y} | {x,y}个 贪婪匹配原则 |
n{x, } | {x, } |
n$ | 以n结束 |
^n | 以n开头 |
var reg=/\w+/g;
var str='abc';
检验一个字符串首尾是否含有数字
var reg=/^\d|\d$/g;
var str="123abc";
检验一个字符串首尾是否都含有数字
var reg=/^\d[\s\S]*\d$/g;
var str="123abc1213";
正则表达式对象属性
属性 | 描述 |
---|---|
global | 是否具有标志g |
ignoreCase | 是否有标志i |
lastIndex | 一个整数,标志开始下一次匹配字符的位置 |
multiline | 是否具有标志m |
source | 正则表达式的源文本 |
\1表示反向引用
正则表达式的方法
方法 | 描述 |
---|---|
test | 检测字符串中有没有匹配的字符串。返回true或false |
exec | 调用i次,返回第i次匹配的结果和下标索引,相当于lastIndex的变化 |
字符串的方法
方法 | 描述 |
---|---|
match | 检索符合正则表达式的字符串 |
search | 返回匹配到的位置 匹配失败返回-1 |
split | 按照正则表达式拆 |
replace | 替换 |
var str='aa';
console.log(str.replace("a","b")); ///ba
//没有访问全局的权利
var reg=/a/g;
var str='aa';
console.log(str.replace(reg,"b")); ///bb
匹配连续四个相同的字符
var str="aaaabbbb";
var reg=/(\w)\1\1\1/g;
匹配类似aabb这样的字符串
var str="aabbccdd";
var reg=/(\w)\1(\w)\2/g;
使形如aabb倒成bbaa
var reg=/(\w)\1(\w)\2/g;
var str="aabb";
console.log(str.replace(reg,$2$2$1$1));
另外一种写法:
var reg=/(\w)\1(\w)\2/g;
var str="aabb";
console.log(str.replace(reg,function($,$1,$2){
return $2+$2+$1+$1;
}));
正向预查 正向断言
比如想选a,先找出a的特点,比如后面是b的a要选出来
var str="abaaa";
var reg=/a(?=b)/g; //表示a后面是b的a,b只参与检查(限定)
var reg=/a(!b)/g; //后面不是b的a
一般的匹配都是贪婪匹配,那么怎么变成非贪婪匹配呢:在后面加一个“?”
var str="aaaa";
var reg=/a+?/g;
字符串去重
var str="aaaaaaabbbbbbccccc";
var reg=/(\w)\1*/g;
str.replace(reg,"$1");
将类似100000从后往前每隔3个打一个点 100.000
var str="100000";
var reg=/((\B)?=(\d{3})+$)/g; //非单词边界 并且空后面跟着3个0-9的数字并且是结尾的
str.replace(reg,".");