js正则表达式详解

创建正则表达式
  1. 构造函数法
//第一个参数:正则表达式	第二个参数:匹配模式
//(i:忽略大小写		g:全局匹配)
let reg = new RegExp('a', 'i');
let str = 'sdAdsd';
//用test检查字符串str是否满足正则表达式的要求
console.log(reg.test(str));//结果为ture
  1. 字面量法
 let reg = /ab/;
 console.log(reg.test('bac'));
基本语法
  1. [ ]
//[]里的内容是或的关系
// a[a-z]b 以a开头,以b结尾,中间只要有a-z中的任意一个就ok
reg = /a[a-z]b/;
console.log(reg.test('agb'));//结果为true

 //^表示非,[^0-9]表示除了数字以外的东西
reg = /[^a-z]/;
console.log(reg.test('312'));//结果为true
  1. 量词
//{}包围量词
//a{4}  意思是a连着出现4次
//(ab){1,3}  意思是ab连在一起出现1~3次都可以

//检查是否有三个a连续出现
let str1 = 'asdsaaaav';
let reg1 = /a{3}/;
console.log(reg1.test(str1));//结果为true
//检查是否有1~3个bv连续出现
let str2 = 'sdbv';
let reg2 = /(bv){1,3}/;
console.log(reg2.test(str2));//结果为true
  1. 以某单词结束或开始
//^a表示以a开头,如想以ab开头则要^(ab)
//b$表示以b结尾
//检查是否有字符串是否以ab开始,中间是sv,且以b结束
let str3 = 'absvsvb';
let reg3 = /^(ab)svb$/;
console.log(reg3.test(str3));//结果为false
  1. 正则表达式中的转义
//字符串和正则表达式中表示'.'需要'\.'
//表示'\'需要'\\'
let str1 = 'aas\.dasd';
let reg1 = /\./;
console.log(str1);//结果为aas.dasd
console.log(reg1.test(str1));//结果为true

let str2 = 'ghkibhg\\g';
let reg2 = /\\/;
console.log(str2);//结果是ghkibhg\g
console.log(reg2.test(str2));//结果是true

//如果用构造函数创建正则表达式,也需要注意这一点
let reg3 = new RegExp('a\\a');
console.log(reg3);//结果为/a\a/
//其他转义字符
//'\w':大小写字母、数字、下划线   (可用word记忆)
//'\W': 除了[A-Za-z0-9_]以外的东西
let reg4 = /\w/;
let str4 = '#$%^';
console.log(reg4.test(str4));//结果为false
reg4 = /\W/;
console.log(reg4.test(str4));//结果为true

//'\d':数字     (可用digit记忆)
//'\D':除了数字之外

//'\s':空格     (可用space记忆)
//'\D':除了空格之外

//'\b':单词边界     (可用border记忆)
//'\B':除了单词边界
let str5 = 'hello children';
let reg5 = /\bchild\b/;
console.log(reg5.test(str5));//false

let str6 = '     he llo    ';//想去掉左右多余的空格但是不去掉中间的空格
console.log(str6.replace(/\s*/g, ''));//所有的空格都去掉了(不加g去掉开头的就停了)
console.log(str6.replace(/^\s*|\s*$/g, ''));
  1. String中与正则表达式相关的语法
//search() 查找是否存在某字符
//传入一个字符或者正则表达式,返回第一个匹配的字符的起始索引
let str1 = 'a1c aec afc';
let res1 = str1.search(/a[a-z]c/);
console.log(res1);//4
//match() 返回符合条件的字符
//传入一个字符或者正则表达式,返回第一个匹配的字符;如模式为全局匹配,会返回所有结果组成的数组
let str2 = 'abc hello aEc';
let res2 = str2.match(/a[a-z]c/ig);
console.log(res2 instanceof Array);//true
console.log(res2);//[ 'abc', 'aEc' ]
//replace() 替换
//传入两个字符,其中第一个可以是正则表达式,返回替换后的字符串;如模式为全局匹配,替换all满足条件的
let str3 = '1a2b3c4d5E6';
//如第二个参数为空串,则被替换后的新字符串为空串
let res3 = str3.replace(/[a-z]/ig, '');
console.log(res3);//123456
//split(),拆分字符串,返回一个数组
let str4 = '1a2b3c4e5F6';
let res4 = str4.split(/[a-z]/i);
console.log(res4);//[ '1', '2', '3', '4', '5', '6' ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值