09-内建对象
1.解构赋值(ES6)
1).数组的解构
const arr=["孙悟空","猪八戒","沙和尚"]
let a,b,c
a=arr[0]
b=arr[1]
c=arr[2]
console.log(a,b,c);
[a,b,c]=arr //解构赋值
console.log(a,b,c);
let [d,e,f,g]=["唐僧","白骨精","蜘蛛精","玉兔精"];//声明的同时赋值
console.log(d,e,f,g);
;[d,e,f,g]=[1,2,3]
console.log(d,e,f,g);
;[d,e,f,g=10]=[1,2,3] //指定默认值
console.log(d,e,f,g);
;[d,e,f,g=g]=[1,2,3] //保持原有值或者默认值
console.log(d,e,f,g);
let [n1,n2]=[4,5,6,7]
console.log(n1,n2);
;let [n1,n2, ...n3]=[4,5,6,7] //解构数组时,可以使用...来设置获取多余的元素
console.log(n1,n2,n3);
function fn() {
return ["二郎神","猪八戒"]
}
let [name1,name2]=fn()
console.log(name1,name2);
//可以通过解构赋值来快速交换两个变量的值
let a1=10
let a2=20
/* let temp=a1
;a1=a2
;a2=temp */
;[a1,a2]=[a2,a1]
console.log("a1=",a1); //a1=20
console.log("a2=",a2); //a2=10
const arr2=["孙悟空","猪八戒"]
console.log(arr2);
;[arr2[0],arr2[1]]=[arr2[1],arr2[0]]
console.log(arr2);
const arr3=[["孙悟空",18,"男"],["猪八戒",20,"男"]]
for (let stu of arr3) {
for (let v of stu) {
console.log(v);
}
}
let [obj,[name,age,gender]]=arr3
console.log(name,age,gender);
console.log(obj);
2).对象的解构
const obj={name:"孙悟空",age:18,gender:"男"}
// let {name,age,gender}=obj //声明变量同时解构对象
console.log(obj);
let name,age,gender
({name,age,gender}=obj)
let {address}=obj //没有的属性返回undefined
console.log(address);
console.log(name,age,gender);
let {name:a,age:b,gender:c}=obj //:别名
console.log(a,b,c);
let {name:a,age:b,gender:c,add="花果山"}=obj //:别名
console.log(a,b,c);
let {name:a,age:b,gender:c,address:d="花果山"}=obj //:别名
console.log(a,b,c,d);
2.对象的序列化
1).对象的序列化:
a.JS中的对象使用时都是存在于计算机的内存中的
b.序列化指将对象转换为一个可以存储的格式,在JS中对象的序列化通常是将一个对象转换为字符串(JSON字符串)
c.序列化的用途(对象转换为字符串有什么用):
-对象转换为字符串后,可以将字符串在不同的语言之间进行传递,甚至可以直接对字符串进行读写操作,使得JS对象可以不同的语言之间传递
d.用途:
①.作为数据交换的格式
②.用来编写配置文字
e.如何进行序列化:
①.在JS中有一个工具类JSON(JavaScript object Notation)JS对象表示法
②,JS对象序列化后会换一个字符串,这个字符串我们称其为JSON字符串
③.也可以手动的编写JSON字符串,在很多程序的配置文件就是使用JSON编写的
④.编写JSON的注意事项:
Ⅰ.JSON字符串有两种类型:
JSON对象 {}
JSON数组[]
Ⅱ.JSON字符串的属性名必须使用双引号引起来
Ⅲ.JSON中可以使用的属性值(元素)
-数字(Number)
-字符串(String) 必须使用双引号
-布尔值(Boolean)
-空值(Null)
-对象(0bject {})
-数组(Array [])
Ⅳ.JSON的格式和JS对象的格式基本上一致的,
注意:JSON字符串如果属性是最后一个,则不要再加,
const obj={
namne:"孙悟空",
age:18
}
//将obj转换为json字符串
const str=JSON.stringify(obj) //JSON.stringify()可以将一个对象转换为json字符串
const obj2=JSON.parse(str) //JSON.parse()可以将一个json字符串转换为一个JS对象
console.log(obj);
console.log(str);
console.log(obj2);
const str2='{"name":"猪八戒","age":"28"}'
console.log(str2);
2).使用JSON进行深复制
const obj={
name:"孙悟空",
friend:{
name:"猪八戒",
}
}
//对obj进行浅复制
const obj2=Object.assign({},obj)
//对obj进行深复制
const obj3=structuredClone(obj)
//使用JSON来完成深复制
const str=JSON.stringify(obj)
const obj4=JSON.parse(str)
const obj5=JSON.parse(JSON.stringify(obj))
3.Map
Map:
a.Map用来存储键值对结构的数据(key-value)
b.Object中存储的数据就可以认为是一种键值对结构
c.Map和Object的主要区别:
-Object中的属性名只能是字符串或符号,如果传递了一个其他类型的属性名,JS解释器会自动将其转换为字符串
-Map中任何类型的值都可以称为数据的key
创建:
new Map()
属性和方法:
map.size( ) 获取map中键值对的数量
map.set(key, value) 向map中添加键值对
map.get(key) 根据key获取值
map.delete(key) 删除指定数据
map.has(key) 检查map中是否包含指定键
map.clear() 删除所有的键值对
map.keys() 获取map的所有的key
map.values() 获取map的所有的value
map.entries() 获取map的所有的键值对
//创建一个Map
const map=new Map()
map.set("name","孙悟空")
map.set(obj2,"呵呵")
map.set(NaN,"哈哈哈")
console.log(map);
map.delete(NaN)
console.log(map);
console.log(map.get('name'));
console.log(map.has('name'));
console.log(map.has(NaN));
map.clear()
console.log(map);
const map1=new Map()
map1.set("name","孙悟空")
map1.set("age",18)
map1.set({},"呵呵呵 ")
//将map转换为数组
//const arr=Array.from(map1) //结构=>[["name","孙悟空"],["age",18]]
const arr=[...map1]
console.log(arr);
const map2=new Map([
["name","猪八戒"],
["age",28],
[{},()=>{}]
])
console.log(map2);
//遍历map
for (const entry of map2) {
console.log(entry);
}①
for (const [key,value] of map2) {
console.log(key,value);
}②
map2.forEach((key,value)=>{
console.log(key,value)
})③
for (const key of map2.values()) {
console.log(key);
}
for (const key of map2.keys()) {
console.log(key);
}
4.Set(ES6)
Set用来创建一个集合,同点在于Set中不能存储重复的数据
创建
new Set( )
new Set( [...])
方法
size 获取数量
add() 添加元素
has() 检查元素
delete() 删除元素
//创建一个Set
const set=new Set()
//向Set中添加数据
set.add(10)
set.add("孙悟空")
set.add(10) //相同的元素添加不进去
console.log(set);
for (const item of set) {
console.log(item);
}
const arr=[...set]
console.log(arr);
const arr2=[1,2,3,2,1,3,4,5,6,7,8,7,9,10]
const set2=new Set(arr2)
console.log([...set2]);
5.Math
-Math一个工具类
-Math中为我们提供了数学运算相关的一些常量和方法
-常量:
Math.PI 圆周率
-方法:
Math.abs() 求一个数的绝对值
Math.min() 求多个值中的最小值
Math.max() 求多个值中的最大值
Math.pow( ) 求x的y次幂
Math.sqrt() 求一个数的平方根
Math.floor() 向下取整
Math.ceil() 向上取整
Math.round() 四舍五入取整
Math.trunc() 直接去除小数位
Math.random() 生成一个0-1之间的随机数
//trunc是直接将小数位后删去,所以truncate(-1.4)=-1,而floor(-1.4)=-2
for (let i = 0; i < 10; i++) {
/*
生成0-5之间的随机数
Math.random() --> 0-1
生成0-X之间的随机数:
Math.round(Math.random()*X)
Math.floor(Math.random()*(X+1))
生成X-Y之间的随机数:
Math.round(Math.random()*(Y-X)+X)
*/
let result=Math.round(Math.random()*5)
console.log(result);
result=Math.floor(Math.random()*6)
console.log(result);
//1-6
result=Math.round(Math.random()*5+1)
//11-20
result=Math.round(Math.random()*9+11)
console.log(result);
}
6.Date对象
-在JS中所有和时间相关的数据都由Date对象来表示
//创建一个Date对象
let d=new Date(); //直接通过new Date()创建时间对象时,它创建的是当前的时间的对象
//创建一个指定的时间对象
//需要在Date()构造函数中传递一个表示时间的字符串作为参数
//日期的字符串格式:月份/日/年 时:分:秒 年-月-日T时:分:秒
var d2=new Date("12/13/2016 11:20:20");
console.log(d2);
d2=new Date("2019-11-23T23:34:56")
console.log(d2);
//new Date(年份,月,日,时,分,秒,毫秒)
d2=new Date(2016,0,1,13,45,33)
console.log(d2);
1).对象的方法:
①.getDate()
-获取当前日期对象是几日
var date=d.getDate();
console.log(date); //14
②.getDay()
-获取当前日期对象是周几
-会返回一个0-6的值
0表示周日
1表示周一
var day=d.getDay();
console.log(day); //2
③.getMonth()
-获取当前日期对象的月份
-会返回0-11的值
var month=d.getMonth();
console.log(month); //1
④. getFullYear()
-获取当前日期对象的4位年份
var year=d.getFullYear();
console.log(year); //2023
⑤.getTime()
-获取当前日期对象的时间戳(timestamp)
-时间戳,指的是从格林尼治标准时间的1970年1月1日,0时0分0秒
到当前日期所花费的毫秒数(1秒= 10日日毫秒)
-计算机底层在保存时间时使用都是时间戳
var time=d.getTime();
console.log(time/1000/60/60/24/365); //53.156958092275495
⑥.Date.now()
-获取当前的时间戳
//利用时间戳来测试代码的执行的性能
//获取当前的时间戳
time=Date.now();
console.log(time);
⑦.toLocaleString()
-可以将一个日期转换为本地时间格式的字符串
-参数:
1.描述语言和国家信息的字符串
zh-CN中文中国
zh-HK中文香港
en-US英文美国
2.需要一个对象作为参数,在对象中可以通过对象的属性来对日期的格式进行配置
dateStyle日期的风格
timeStyle 时间的风格
full
long
medium
short
hour12是否采用12小时值
true
false
weekday星期的显示方式
long
short
narrow
year
2-dight
numeric
/* 日期的格式化 */
var date=new Date()
let result=date.toLocaleDateString() //将日期转换为本地的字符串
result=date.toLocaleTimeString() //将时间转换为本地的字符串
result=date.toLocaleString("zh-CN",{dateStyle:"full",timeStyle:"full",hour12:true})
console.log(result);
7.包装类
a.浏览器自用:
基本数据类型:String Number Boolean Null Undefined
引用数据类型:Object
b.在JS中,除了直接创建原始值外,也可以创建原始值的对象
c.在JS中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型的数据转换为对象
①.new String() -可以将基本数据类型字符串转换为String对象
②.new Number() -可以将基本数据类型的数字转换为Number对象
③.new Boolean() -可以将基本数据类型的布尔值转换为Boolean对象
④.注意:在实际应用中不会使用基本数据类型的对象,如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果
d.包装类:
①.JS中一共有5个包装类:
Ⅰ.String --> 字符串包装为String对象
Ⅱ.Number --> 数值包装为Number对象
Ⅲ.Boolean --> 布尔值包装为Boolean对象
Ⅳ.BigInt --> 大整数包装为BigInt对象
Ⅴ.Symbol --> 符号包装为Symbol对象
②.通过包装类可以将一个原始值包装为一个对象,
当我们对一个原始值调用方法或属性时,JS解释器会临时将原始值包装为对应的对象,然后调用这个对象的属性或方法
e.由于原始值会被临时转换为对应的对象,这就意味着对象中的方法都可以直接通过原始值来调用
var a=123;
console.log(typeof a);
//创建一个Number类型的对象
var num=new Number(3);
var str=new String("hello");
var bool=new Boolean(true);
//向num中添加一个属性
num.hello="ahwcewe";
console.log(typeof num);
console.log(num.hello);
方法和属性只能添加给对象,不能添加给基本数据类型
当我们对一些基本数据类型的值去调用属性和方法时,浏览器会临时使用包装类将其转换为对象,
然后在调用对象的属性和方法,调用完以后,在将其转换为基本数据类型
var s=123;
s=s.toString();
s.hello="你好";
console.log(s.hello);
console.log(typeof s);
8.字符串的方法
1).字符串:
a.字符串其本质就是一个字符数组 “hello” --> [ “h”, “e”,“l”,“l”,“o”]
b.在底层字符串是以字符数组的形式保存的 [“H”, “e”, “1”]
c.字符串的很多方法都和数组是非常类似的
d.属性和方法:
length 获取字符串的长度
字符串[索引] 获取指定位置的字符
①.length属性
-可以用来获取字符串的长度
//创建一个字符串
var str = "Hello goodmorning";
console.log(str.length); //17
console.log(str[4]); //o
②.charAt()
-可以返回字符串中指定位置的字符
-根据索引获取指定的字符
str.at()(实验方法)
-根据索引获取字符,可以接受负索引
console.log(str.charAt(0));
console.log(str[0]);
③.charCodeAt()
-获取指定位置字符的字符编码(undefined编码)
console.log(str.charCodeAt(0)); //72
④. String.fromCharCode();
-可以根据字符编码去获取字符
console.log(String.fromCharCode(20013)); //中
console.log(String.fromCharCode(0x2692));
⑤.concat()
-可以用来连接两个或多个字符串
-作用和+一样
console.log(str.concat("你好","再见"));
console.log(str+"你好","再见");
⑥.indexOf()
-该方法可以检索一个字符串中是否含有指定内容
-如果字符串中含有该内容,则会返回其第一次出现的索引
如果没有找到指定的内容,则返回-1
-可以指定一个第二个参数,指定开始查找的位置
console.log(str.indexOf("z")); //-1
console.log(str.indexOf("o")); //4
console.log(str.indexOf("o",8)); //8
⑦.lastIndexOf();
-该方法的用法和indexOf()一样,
不同的是indexOf是从前往后找,
而lastIndexOf是从后往前找
-也可以指定开始查找的位置
console.log(str.lastIndexOf("o")); //11
⑧.slice()
-可以从字符串中截取指定的内容
-不会影响原字符串,而是将截取到内容返回
-参数:
第一个,开始位置的索引(包括开始位置)
第二个,结束位置的索引(不包括结束位置)
-如果省略第二个参数,则会截取到后边所有的
-也可以传递一个负数作为参数,负数的话将会从后边计算
console.log(str.slice(0,2)); //He
⑨. substring()
-可以用来截取一个字符串,可以S1ice()类似
-参数:
-第一个:开始截取位置的索引(包括开始位置)
-第二个:结束位置的索引(不包括结束位置)
-不同的是这个方法不能接受负值作为参数,
如果传递了一个负值,则默认使用0
-而且他还自动调整参数的位置,如果第二个参数小于第一个,则自动交换
console.log(str.substring(0,2)); //He
console.log(str.substring(2,0)); //He
console.log(str.substring(2,-1)); //He
⑩.substr()
-用来截取字符串
-参数:
1.截取开始位置的索引
2.截取的长度
console.log(str.substr(0,5)); //Hello
⑪.split()
-可以将一个字符串拆分为一个数组
-参数:
-需要一个字符串作为参数,将会根据该字符串去拆分数组
-如果传递一个空串作为参数,则会将每个字符都拆分为数组中的一个元素
str="abc,bcd,efg,hif";
arr=str.split(",");
console.log(arr);
console.log(arr[0]);
⑫.toUpperCase()
-将一个字符串转换为大写并返回
toLowerCase()
-将一个字符串转换为小写并返回
console.log(str.toUpperCase());
arr = str.toUpperCase();
console.log(arr);
console.log(arr.toLowerCase());
⑬.includes( )
-用来检查字符串中是否包含某个内容
有返回true
没有返回false
let str1="hello hello how are you"
let result;
console.log(str1.includes("how",13)); //false
⑭.str.startswith( )
-检查一个字符串是否以指定内容开头
str.endswith()
-检查一个字符串是否以指定内容结尾
console.log(str1.endsWith("you")); //true
⑮.str.padStart()
str.padEnd()
-通过添加指定的内容,使字符串保持某个长度
let str2="100"
console.log(str2);
console.log(str2.padStart(7,"+"));
console.log(str2.padEnd(7,"+"));
⑯.str.replace()
-使用一个新字符串替换一个指定内容
str.replaceAll()
-使用一个新字符串替换所有指定内容
result=str1.replace("hello","abc")
console.log(result);
result=str1.replaceAll("hello","abc")
console.log(result);
⑰.str.slice( )
-对字符串进行切片
str.substring()
-截取字符串
result=str1.slice(12,15)
console.log(result);
result=str1.substring(12,15)
console.log(result);
result=str1.substring(15,12)
console.log(result); //substring()会自动交换参数的位置
result=str1.substr(2,5)
console.log(result);
⑱.str.trim()
-去除前后空格
str.trimStart( )
-去除开始空格
str.trimEnd( )
-去除结束空格
str1=" ab c "
console.log(str1);
result=str1.trim()
console.log(result);
result=str1.trimStart()
console.log(result);
result=str1.trimEnd()
console.log(result);
9.正则表达式
1).正则表达式的简介
-正则表达式用来定义一个规则
-通过这个规则计算机可以检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来
-正则表达式也是JS中的一个对象,所以要使用正则表达式,需要先创建正则表达式的对象
a.创建正则表达式的对象:
语法:
var 变量=new RegExp("正则表达式","匹配模式");
使用typeof检查正则对象,会返回object
var reg=new RegExp("a");这个正则表达式可以检查一个字符串中是否含有a
在构造函数中可以传递一个匹配模式作为第二个参数,
可以是
i 忽略大小写
g 全局匹配模式
//创建正则表达式的对象
let reg1=new RegExp("a","i") //通过构造函数来创建一个正则表达式的对象
//使用字面量来创建正则表达式:/正则/匹配模式
reg1=/a/i
reg1=/\w/
reg1=new RegExp("\w")
console.log(reg1); // /w/
b.正则表达式的方法:
test( )
-使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,
如果符合则返回true,否则返回false
//通过正则表达式检查一个字符串是否符合规则:
var reg = new RegExp("a");
var str = "a";
console.log(reg.test(str)); //true
2).正则表达式的字符
1.在正则表达式中大部分字符都可以直接写
2. | 在正则表达式中表示或
3. [] 表示或(字符集)
[a-z]·任意的小写字母
[A-Z]·任意的大写字母
[a-zA-Z]·任意的字母
[0-9]任意数字
4. [^] 表示除了
[^x] 除了x
5. . 表示除了换行外的任意字符
6.在正则表达式中使用\作为转义字符
7.其他的字符集
\w 任意的单词字符 [A-Za-z0-9_]
\W 除了单词字符 [^A-Za-z0-9_]
\d 任意数字 [0-9]
\D 除了数字 [^o-9]
\s 空格
\S 除了空格
\b 单词边界
\B 除了单词边界
8.开头和结尾
^ 表示字符串的开头
$ 表示字符串的结尾
a.使用字面量来创建正则表达式
语法:
var变量=/正则表达式/匹配模式B
var reg=new RegExp("a","i");
reg = /a/i;
console.log(reg.test("abc"));
b.检查一个字符串中是否含有 . , . 表示任意字符
在正则表达式中使用\作为转移字符
\. 表示.
\\ 表示\
注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串中转义字符,如果要使用\则需要使用\\来代替
var reg=/\./;
var reg1=new RegExp("\\\\");
console.log(reg1.test("1@#\\"));
c.创建一个正则表达式,检查一个字符串中是否含有a或b,使用|表示或者的意思
reg = /a|b/;
d.创建一个正则表达式,检查一个字符串中是否含有字母:reg=/[a-z]/;(undefined编码中含有6个非字母的符号)
[ ] 里的内容也是或的关系
[ab]==a|b
[a-z] 任意的小写字母
[A-Z] 任意的大写字母
[A-z] 任意的字母
[0-9] 任意数字
reg = /[a-z]/;
//检查一个字符串中是否含有abc或adc或aec
reg = /a[bde]c/
e.[^]除了
reg = /[^ab]/
reg = /[^0-9]/
console.log(reg.test("123"));
f.检查一个字符串是否含有单词
reg=/\bchild\b/;
console.log(reg.test("hello children"));
g.检查一个字符串是否以a开头
^表示开头
$表示结尾
如果在正则表达式中同时使用^$则要求字符串必须完全符号正则表达式
reg=/^a/
reg=/^[0-9]/
reg=/c$/
reg=/^a|a$/
reg=/^a.*a$/ //以a开头且以a结尾
console.log(reg.test("abbbbc"));
reg=/^a$/ //只匹配字母a,完全匹配,要求字符串必须和正则完全一致
console.log(reg.test('a'));
h.去除掉字符串中的空格
//接受一个用户的输入
//var name=prompt("请输入你的用户名:");
var str=" he llo ";
console.log(str);
//去除掉字符串中前后的空格
console.log(str.replace(/\s/g,""));
//去除开头的空格
console.log(str.replace(/^\s*/,""));
//去除结尾的空格
console.log(str.replace(/\s*$/,""));
//匹配开头和结尾的空格
console.log(str.replace(/^\s*|\s*$/,""));
3).正则表达式的量词
-通过量词可以设置一个内容出现的次数
-量词只对它前边的一个内容起作用
- {n}正好出现n次
- {m,n}出现m-n次
- {m, } m次以上
- + 至少一个,相当于{1,}
- * 0个或多个,相当于{0,}
- ? 0个或1L相当于{0,1}
var str="aaaa"
var reg=/aaa/;
reg=/a{3}/;
reg=/(ab){3}/
reg=/ab{3}/
reg=/ab{3}c/
reg=/ab{1,3}c/
reg=/ab{3,}c/
reg=/ab+c/
reg=/ab*c/
reg=/ab?c/
console.log(reg.test(str));
练习:
/*
创建一个正则表达式用来检查字符串是否是一个合法手机号码
手机号码的规则:
1.以1开头
2.第二位3-9任意数字
3.三位以后任意数字9个
^1 [3-9] [0-9]{9}$
*/
var phoneStr=prompt("请输入电话号码:");
var phoneReg=/^1[3-9][0-9]{9}$/;
console.log(phoneReg.test(phoneStr));
alert(phoneReg.test(phoneStr));
/*
练习:
将dajsdh13715678903jasdlakdkjg13457890657djashdjka13811678908sdadadasd中的号码提取出来
*/
let num="dajsdh13715678903jasdlakdkjg13457890657djashdjka13811678908sdadadasd"
let re0=/1[3-9]\d{9}/g
re0=/(1[3-9]\d)\d{4}(\d{4})/g
let resu
while (resu=re0.exec(num)) {
//console.log(resu[0],resu[1],resu[2]);
console.log(resu[1]+"****"+resu[2]);
}
re= /^1[3-9]\d{9}/
console.log(re.test("13456789042"));
10.字符串与正则表达式相关的方法
①.split()
-可以将一个字符串拆分为一个数组
-方法中可以传递一个正则表达式作为参数,这样就法将会根据正则表达式去拆分字符串
-这个方法即使不指定全局匹配,也会全都拆分
var str="1a2s3d4c5v6b7b8n9m";
//根据任意字母来将字符串拆分
console.log(str.split(/[a-z]/));
②.search()
-可以搜索字符串中是否含有指定内容
-如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1
-它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串
-search()只会查找第一个,即使设置全局匹配也没用
str="hello abc hello abc adc afc"
console.log(str.search(/a[bef]c/)); //6
③.match()
-可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
-默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
可以为一个正则表达式设置多个匹配模式,且顺序无所谓
-match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
matchAll()
-根据正则表达式去匹配字符串中符合要求的内容(必须设置g 全局匹配)
-它返回的是一个迭代器
str="1a2s3d4c5v6b7b8n9mA10D11";
str="dajsdh13715678903jasdlakdkjg13457890657djashdjka13811678908sdadadasd"
let result=str.matchAll(/1[3-9]\d{9}/g)
for (let item of result) {
console.log(item);
}
console.log(str.match(/[a-z]/g));
console.log(str.match(/[a-z]/ig));
console.log((str.match(/[a-z]/g))[0]);
④.replace()
-可以将字符串中指定内容替换为新的内容-参数:
1.被替换的内容,可以接受一个正则表达式作为参数
2.新的内容
-默认只会替换第一个
console.log(str.replace(/a/gi,"@_@"));
console.log(str.replace(/[a-z]/gi,""));
表达式作为参数,然后会根据正则表达式去检索字符串
-search()只会查找第一个,即使设置全局匹配也没用
str="hello abc hello abc adc afc"
console.log(str.search(/a[bef]c/)); //6
③.match()
-可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
-默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
可以为一个正则表达式设置多个匹配模式,且顺序无所谓
-match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果
matchAll()
-根据正则表达式去匹配字符串中符合要求的内容(必须设置g 全局匹配)
-它返回的是一个迭代器
str="1a2s3d4c5v6b7b8n9mA10D11";
str="dajsdh13715678903jasdlakdkjg13457890657djashdjka13811678908sdadadasd"
let result=str.matchAll(/1[3-9]\d{9}/g)
for (let item of result) {
console.log(item);
}
console.log(str.match(/[a-z]/g));
console.log(str.match(/[a-z]/ig));
console.log((str.match(/[a-z]/g))[0]);
[外链图片转存中…(img-JRsSA72t-1683890217745)]
④.replace()
-可以将字符串中指定内容替换为新的内容-参数:
1.被替换的内容,可以接受一个正则表达式作为参数
2.新的内容
-默认只会替换第一个
console.log(str.replace(/a/gi,"@_@"));
console.log(str.replace(/[a-z]/gi,""));