正则元字符详解, 正则匹配, 正则捕获,常见正则表达式

本文详细解析了正则表达式中的元字符,包括^和$、转义字符,介绍了常用的正则表达式练习,如数字验证、密码验证、中文姓名和邮箱验证。同时,探讨了正则捕获的原理,包括懒惰性、贪婪性以及如何捕获所有匹配结果,最后提到了test和replace方法在捕获中的应用。
摘要由CSDN通过智能技术生成

正则表达式

正则表达式(regular expression): 有一个 RegExp类

正则表达式是用来处理字符串的规则.

  • 只能处理字符串
  • 它是一个规则:
    • 可以验证字符串是否符合某个规则(test).
    • 也可以吧字符串当中符合规则的内容捕获到.(exec/match…)
let str = 'good good study , day day up!';
// => 学正则就是用来指定规则
let reg = /\d+/;
reg.test(str) // false

str = "2019-08-12"
console.log(reg.exec(str)); // [ '2019', index: 0, input: '2019-08-12', groups: undefined ]

1.0 编写正则表达式

正则表达式的创建方式有两种:

#1. 字面量方式创建正则 (两个斜杠之间包起来的,都是用来描述正则规则的元字符)
let reg = /\d+/;

#2. => 构造函数模式创建正则  两个参数: 1. 元字符字符串, 2.修饰符字符串
let reg2 = new RegExp("\\d+"); // 创造类实例的方式

1.1 正则表达式由两部分组成

正则表达式是由两部分组成的:

  1. 元字符
  2. 修饰符
1.1.1 元字符
// 常用元字符 几大类
# => 1. 量词元字符:  设置出现的次数
* 		零到多次
+ 		1 到多次
? 		0 次或 1{
    n} 	出现 n 次
{
    n,}	出现 n 到 多次
{
    n,m}	出现 n 到 m次

# =>2.	特殊元字符:  单个或者组合在一起, 代表特殊的含义
\		转义字符(普通字符转换为特殊字符, 或者特殊字符转化为普通字符)
.		除了 \n(换行符) 以外的任意字符
^		以哪一个元字符作为字符串开始
$		以哪一个元字符作为字符串结束
\n		换行符
\d		0~9 之间的数字
\D0~9 之间的任意字符.
\N		除换行符以外的任意字符
\w		数字,字母,下划线中的任意字符.
\s		一个空白字符(包含空格, 制表符, 换页符等)
\t		一个制表符(一个TAB)
\b		匹配一个单词的边界
x|y		x或者y中的一个字符
[xyz]	x或者y或者z中的任意 一个字符.
[^xy]	除了 x/y 以外的任意字符.
[a-z]	指定 a-z 这个范围中的任意字符.
[^a-z]	非 a-z的字符
()		正则中的分组符号
(?:)	只匹配不捕获
(?=)	正向预查
(?!)	负向预查

#3=> 普通元字符:  代表本身含义的.
/gene/ 此正则匹配的就是 "gene"
1.1.2 修饰符

正则表达式常用的修饰符:

// 正则表达式常用的修饰符: i m g
i(ignoreCase)	忽略单词大小写匹配
m(multiline)	可以进行多行匹配
g(global)		全局匹配

console.log(/g/.test('Gene')); // false
console.log(/g/i.test('Gene')); // true

2.0 正则表达式元字符详解

2.1 ^和$ 元字符详解

^ 字符在正则中的含义:

  1. 表示以 什么什么字符开始
  2. 取反, 表示 除了什么什么字符
#比如:
  /[^a-z\s]/  会匹配字符串 'good good study, day day up!' 中的 "," ,  该正则表示的是匹配  #(除了 a-z和空白字符的字符),因此这里匹配的是 逗号","
  const str = 'good good study, day day up!'
  const reg = /[^a-z\s]/
  console.log(str.search(reg));
  console.log(str[str.search(reg)]);

3**. 总结一下**

#1. 那什么时候 "^" 表示限定 以什么字符开头?
	    /[(^\s+)(\s+$)]/g	
		(^dog)$
		^(dog)$
#2. 什么时候 "^" 表示 否定?
		[^a]表示“匹配除了a的任意字符”。
		[^a-zA-Z0-9]表示“找到一个非字母也非数字的字符”。
#3. 总结:
		经过对比, 我们可以发现, 只要 "^" 这个字符是在中括号 "[]" 中直接使用的时候, 也就是说不包括嵌套分组使用的时候,  , 该字符才代表的是 # 对字符反向取非的意思.

^和$ 案例详解

let reg = /^\d/
console.log(reg.test("Gene")); // false
console.log(reg.test("2020-Gene")); // true
console.log(reg.test("Gene-2020")); // false
let reg = /\d$/
console.log(reg.test("Gene")); // false
console.log(reg.test("2020-Gene")); // false
console.log(reg.test("Gene-2020")); // true
#//=> 如果^和$ 两个都不加, 意思是只要字符串中 包含 符合规则的内容即可.
let reg = /\d+/
let reg = /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值