JavaScript基础_3(正则表达式)

前言

本期内容是对JavaScript中正则表达式的简单总结;

正文

正则表达式的test方法:

let str="name zhao";
let reg=/zhao/;里面就是正则表达式了;
let res=reg.test(str);
console.log(res);
//在字符串中匹配到zhao返回true;没有则返回false;

在这里插入图片描述
多种模式匹配:

let str_1="name zhao";
let str_2="name qian";
let reg=/zhao|qian/;//|相当于或
let res_1=reg.test(str_1);
let res_2=reg.test(str_2);
console.log(res_1,res_2);

在这里插入图片描述
通过添加标志忽略大小写:

let str_1="name zhao";
let str_2="name ZhAo";
let reg=/zhao/i;//后面的i就是标志位;表示匹配时忽略大小写;
let res_1=reg.test(str_1);
let res_2=reg.test(str_2);
console.log(res_1,res_2);

在这里插入图片描述
提取匹配项 match方法:

let str="zhao qian sun li";
let reg=/i/;
let res=str.match(reg);//注意这里是str的match方法
//match方法返回一个数组,数组中保存了匹配信息,但只有第一个匹配到的信息;
console.log(res);

在这里插入图片描述
通过添加标志使全局匹配:

let str="zhao qian sun li";
let reg=/i/g;//g为全局匹配的标志位
let res=str.match(reg);//返回一个数组,数组内有全部匹配到的内容;
console.log(res);

在这里插入图片描述
通配符的使用:

let str="zhao qian sun li";
let reg=/.i/g;//.为通配符,表示任何一个值;
let res=str.match(reg);
console.log(res);

在这里插入图片描述
字符集的简单使用:

let str="zhao qian sun li";
let reg=/[sql]i/g;//[]表示一个字符集,表示i前面可以是q或者l或者s,仅表示一个字符;
let res=str.match(reg);
console.log(res);

在这里插入图片描述
字符集的其他用法:

let str="@qq zhao 123";
let reg_1=/[0-9]/g;//匹配0-9的数字,相当于[0123456789];
let reg_2=/[a-z]/g;//匹配a-z的字符;
let reg_3=/[a-z0-9]/g;//匹配a-z的字符和0-9的数字;
let reg_4=/[^0-9a-z]/g;//加了^相当于不匹配,匹配除0-9a-z的所有字符;
let res_1=str.match(reg_1);
let res_2=str.match(reg_2);
let res_3=str.match(reg_3);
let res_4=str.match(reg_4);
console.log(res_1);
console.log(res_2);
console.log(res_3);
console.log(res_4);

在这里插入图片描述
匹配多次出现的字符:

let str_1="naaaaaaame";
let str_2="nme";
let reg_1=/na+/g;//匹配n后面有一到多个a;
let reg_2=/na*/g;//匹配n后面有零到多个a;
console.log(str_1.match(reg_1));
console.log(str_1.match(reg_2));
console.log(str_2.match(reg_1));
console.log(str_2.match(reg_2));

在这里插入图片描述
贪婪模式与非贪婪模式:

let str="naaaaaaame";
let reg_1=/na*/g;//贪婪模式尽可能的去多匹配
let reg_2=/na*?/g;//在*后面加?;非贪婪模式,尽可能少的匹配;
console.log(str.match(reg_1));
console.log(str.match(reg_2));

在这里插入图片描述
匹配字符串的开头和结尾:

let str_1="name zhao";
let str_2="zhao name"
let reg_1=/^name/g;//在前面加^匹配在开头的name
let reg_2=/zhao$/g;//在结尾加$匹配在结尾的zhao
console.log(str_1.match(reg_1));
console.log(str_1.match(reg_2));
console.log(str_2.match(reg_1));
console.log(str_2.match(reg_2));

在这里插入图片描述
字母数字字符集:

let str="namezhao123@163.com";
let reg_1=/\w+/g;//匹配所有字母数字和_;相当于[0-9a-zA-Z_];
let reg_2=/\W+/g;//匹配所有字符;相当于[^0-9a-zA-Z_];
let reg_3=/\d+/g;//匹配所有数字;相当于[0-9];
let reg_4=/\D+/g;//匹配所有的非数字;相当于[^0-9];
console.log(str.match(reg_1));
console.log(str.match(reg_2));
console.log(str.match(reg_3));
console.log(str.match(reg_4));

在这里插入图片描述

匹配空格和非空格:

let str="aaa aaa aaa";
let reg_1=/\s/g;//匹配所有空格
let reg_2=/\S/g;//匹配所有非空格
console.log(str.match(reg_1));
console.log(str.match(reg_2));

在这里插入图片描述
数量说明符:

let str_1="naaame";
let str_2="naaaaaaame";
let reg_1=/na{2,4}/g;//表示最少匹配两个a,最多匹配4个a;
let reg_2=/na{2,}/g;//表示最少匹配两个a,最多不限;
let reg_3=/na{3}/g;//表示只匹配三个a;
console.log(str_1.match(reg_1));
console.log(str_1.match(reg_2));
console.log(str_1.match(reg_3));
console.log(str_2.match(reg_1));
console.log(str_2.match(reg_2));
console.log(str_2.match(reg_3));
console.log(reg_1.test(str_2));//值得注意的是这里返回true;str_2中存在naaaa,所以返回ture;

在这里插入图片描述
有或者没有:

let str_1="name";
let str_2="nme";
let reg=/na?me/g;//a后面加?表示a可有可无,都能匹配;
console.log(str_1.match(reg));
console.log(str_2.match(reg));

在这里插入图片描述
正向先行断言,负向先行断言:

let str="name niu";
let reg_1=/n(?=a)/;//正向先行断言;匹配后面是a的n;
let reg_2=/n(?!a)/;//负向先行断言;匹配后面不是a的n;
console.log(str.match(reg_1));
console.log(str.match(reg_2));
//可以看出这两个n并不是一个n;

在这里插入图片描述
混合字符组:

let str_1="name";
let str_2="nane";
let reg=/na(me|ne)/g;//括号里表示na后面可以是me或者ne;
console.log(str_1.match(reg));
console.log(str_2.match(reg));

在这里插入图片描述
捕获组:

let str="name name name";
let reg=/(name)(\s)\1\2\1/g;//\1表示第一个括号\2表示第二个括号
console.log(str.match(reg));

在这里插入图片描述
replace方法:

let str_1="The sky is red";
let reg_1=/red/g;
console.log(str_1.replace(reg_1,"blue"));
//这个方法返回一个替换过的字符串,源字符串并不改变;
let str_2="sky blue";
console.log(str_2.replace(/(\w+)\s(\w+)/g,'$2 $1'));

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值