正则表达式

笔记学习出处:渡一教育 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,".");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值