JS-正则表达式

1.正则表达式的作用

1.1正则表达式是专门用来处理字符串的。
  • 正则表达式可以从字符串中查找需要的数据;
    正则表达式可以从字符串中获取需要的数据;
    正则表达式可以从字符串中替换需要的数据。
1.2正则表达式是由特殊的字符组成的。
  • [] 中括号中可以写多个任意字符,代表只匹配一个字符
    [abc] 代表可以匹配a,b,C三个字母中的任意一个字符
    [a-z] 匹配小写字母中的任意一个
    [A-Z] 匹配大写字母中的任意一个
    [A-Za-z] 匹配所有的字母
    [0-9] 匹配任意一个数字
  • [^] 如果中括号中,以^ 开头,代表非
    [^0-9] 匹配非数字中的任意一个字符
    [^a-z] 匹配非小写字母中的任意一个字符

2.定义一个正则表达式

  1. /… / 以/开头,以/结尾,中间的内容为正则表达式
let regex = /[abc]/
  1. new RegExP对象
let regex =new RegExP("[abc]")

上述的代码可以将一个字符串转成正则表达式。

let regex = new RegExp(/[abc]/)

例:

let regex = /[abc]/ ;
console. log(regex)
let regex1 = new RegExp("[abc]") ;
console. log(regex1)

控制台显示:
在这里插入图片描述

3.正则表达式中的两个方法

  1. test() 返回一个boolean 值,代表是否匹配

例:

let regex = /[abc]/ ;
var s = "sdbfascd";
console. log(regex.test(s))

控制台显示:
在这里插入图片描述
注:字符串中只要有abc中任意一个都匹配,返回true。

  1. exec() 返回一个数组、数组中存放的是正则匹配的元素,如果不匹配,返回null
    注:exec() 返回一个数组,数组中索引为0的元素是整个正则表达式匹配的内容;
    索引大于0的数据,代表的是正则表达式中子表达式(分组) 匹配的内容。

例:

let regex = /[abc]/ ;
var s = "sdbfascd";
console. log(regex.exec(s))

控制台显示:
在这里插入图片描述

4.正则表达式中的特殊字符

4.1

\d匹配任意一个 数字,等价于[0-9]
\D等价于[^0-9]
\w匹配字母、数字、和下划线中的任意一个字符串 [a-zA-Z0-9_]
\W等价于[^a-zA-Z0-9_]

例:

let regex = /\w/ ;
var s = ",_sdbfascd";
console. log(regex.exec(s))

控制台显示:
在这里插入图片描述注:- 中划线不匹配

4.2

\s匹配一个空白字符 (空格和Tab制表符产生的空白)
\S匹配一个 非空白字符

例:

let regex = /\s/ ;
var s = " ";
console. log(regex.exec(s))

控制台显示:
在这里插入图片描述

4.3

.匹配除换行符之外的所有 任意一个字符
.匹配一个点

例:

let regex = /./ ;
var s = `
	sdf
	dfdsf
`;
console. log(regex.exec(s))

控制台显示:
在这里插入图片描述注:sdf前有空格

  1.  	X{n} 匹配 n个X
     	X{n,} 匹配至少 n个X
     	X{n,m} 匹配 n到m个X
    

例:

let regex = /[a-z-]{3,6}/ ;
var s = `sdfsAd-sdfsdf_sdf`;
console. log(regex.exec(s))

控制台显示:
在这里插入图片描述
5.贪婪表达式

		X* 匹配 0到多个,等价于X{0}
		X+ 至少匹配一个,等价于X{1,}
		X? 匹配最多一个,等价于X{0,1}
		
		非贪婪式表达式,在贪婪式表达式后 添加一个?
		X*? 匹配 0到多个
		X+? 至少匹配一个
		X?? 匹配最多一个

例:

let regex = /[a-z-]*F/ ;
var s = `sdAfsAd-sdfsFdf_sdf`;
console. log(regex.exec(s))

控制台显示:
在这里插入图片描述

let regex = /[a-z-]*f/ ;
var s = `sdAfsAd-sdfsFdf_sdf`;
console. log(regex.exec(s))

控制台显示:
在这里插入图片描述

let regex = /[a-z-]+f/ ;
var s = `sdAfsAd-sdfsFdf_sdf`;
console. log(regex.exec(s))

控制台显示:
在这里插入图片描述

let regex = /[a-z-]?f/ ;
var s = `sdAfsAd-sdfsFdf_sdf`;
console. log(regex.exec(s))

控制台显示:
在这里插入图片描述
6.限定符

		 ^ 如果出现在正则的第一个位置,则代表以……开头
		 $ 如果出现在正则的尾部,代表以... 结尾

7.选择

	| 或	

8.分组

	(...) 组从左到右进行查询

9.引用

		\num 引用第 num 组的匹配的内容,num从 1 开始

10.命名捕获组

(?<key>\d+) 将\d+ 匹配的内容 赋值给key,可以通过exec(). groups来进行获取	
?:  非捕获匹配
	famil(?:y|ies)此时的小括号不能算作分组		

11.断言

			正向确定断言		?=
			正向否定断言		?!
			反向确定断言		?<=
			反向否定断言		?<!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值