JavaScript学习笔记(9)——正则表达式


一、正则表达式

正则表达式用来定义一个规则
  通过这个规则计算机可以检查一个字符串是否符合规则,或者将字符串中符合规则的内容提取出来
正则表达式也是JS中的一个对象,所以要使用正则表达式,需要先创建正则表达式的对象
正则表达式对象的创建:

// 1、new RegExp() 可以接收两个参数(字符串) 1.正则表达式 2.匹配模式
let reg = new RegExp("a", "i") // 通过构造函数来创建一个正则表达式的对象
// 2、使用字面量来创建正则表达式:/正则/匹配模式
reg = /a/i   // /a/ 表示,检查一个字符串中是否有a    i表示忽略大小写

在RegExp中用转义字符的时候,记得要用两个/,如果只有一个/的话会忽略,不起作用

二、正则表达式的语法

1.字符集

1、| 在正则表达式中表示或
2、[] 表示或(字符集)

  • [a-z] 任意的小写字母
  • [A-Z] 任意的大写字母
  • [a-zA-Z] 任意的字母
  • [0-9]任意数字

3、[^] 表示除了
  [^a-z] 除了a-z,匹配包含小写字母以外内容的字符串
4、. 表示除了换行外的任意字符
  在正则表达式中使用\作为转义字符,如果只想匹配.可以用这个 re = /./
5、其他的字符集

  • \w 任意的单词字符 等价于:[A-Za-z0-9_ ]
  • \W 除了单词字符 [^A-Za-z0-9_ ]
  • \d 任意数字[0-9]
  • \D 除了数字 [^0-9]
  • \s 空格 包括空格、制表符、换页符、换行符
  • \S 除了空格
  • \b 单词边界
  • \B除了单词边界

6、开头和结尾
  ^ 表示字符串的开头
  $ 表示字符串的结尾

re = /^a$/     //只匹配字母a,完全匹配,要求字符串必须和正则完全一致
re = /^abc$/   //只匹配abc,完全匹配

2.量词

{m} 正好m个
{m,} 至少m个
{m,n} m-n个
+ 一个以上,相当于{1,}
* 任意数量的a
? 0-1次 {0,1}

let re = /a{3}/   //检查字符串中有没有aaa
let result = re.test("aaaa")  //true  
re = /^a{3}$/     //检查字符串中正好只有aaa

3.语法

re.exec() 获取字符串中符合正则表达式的内容
g表示全局匹配
用()可以分组

let str = "abcaecafcacc"
let re = /a[a-z]c/ig
let result = re.exec(str)  //但是要通过不断调用才可以得到所有匹配的
let re = /a(([a-z])c)/ig
let result = re.exec(str)  //含有"abc" "bc" "b"
while(result){  //循环遍历
	console.log(result[0], result[1], result[2])
	result = re.exec(str)
}

4.字符串

split()
  可以根据正则表达式来对一个字符串进行拆分
search()
  可以去搜索符合正则表达式的内容第一次在字符串中出现的位置
replace()
  根据正则表达式替换字符串中的指定内容
match()
  根据正则表达式去匹配字符串中符合要求的内容,不可以分组
matchAll()
  根据正则表达式去匹配字符串中符合要求的内容**(必须设置g 全局匹配)**
  它返回的是一个迭代器,可以分组

let str = "a@b@c@d"
let result = str.split("@")

str = "孙悟空abc猪八戒adc沙和尚"
result = str.split(/a[bd]c/)

result = str.search("abc")   //3

str ="dajsdh13715678903jasdlakdkjg13457890657djashdjka13811678908sdadadasd"
result = str.replace(/1[3-9]\d{9}/g, "哈哈哈")  //全局手机号替换为哈哈哈

result = str.match(/1[3-9]\d{9}/g)  //返回的是一个数组["13715678903","13457890657","13811678908"]

result = str.matchAll(/1[3-9](\d{9})/g)  //可以分组
for(let item of result){
	console.log(item)
}


总结

本节主要是学习js的正则表达式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值