【正则表达式

正则表达式构造函数RegExp()和正则表达式字面量的主要区别在于语法和使用方式。

正则表达式构造函数RegExp()

  • 使用字符串作为参数,需要进行双重转义,即需要使用反斜杠来表示特殊字符,如 \\d 表示数字, \\w 表示字母下划线等。
  • 构造函数的参数可以是一个字符串,也可以是两个字符串,第一个字符串是正则表达式模式,第二个字符串是修饰符。
  • 如果正则表达式模式是一个变量,只能使用构造函数的方式创建正则表达式。

正则表达字面量  // (是左边一个 / 右边一个 / 将表达式包围起来)

  • 使用两个斜杠将正则表达式包围起来。
  • 字面量的方式更简洁,不需要进行双重转移,直接使用特殊字符即可。
  • 正则表达式字面量的模式和修饰符直接写在斜杠之间是一样的。

以下是等价的:

var re = new RegExp("\\w+");
var re = /\w+/;

1.基本语法 

正则表达式是由字符和特殊字符组成的模式,用于匹配字符串中的文本。

常见的特殊字符包括元字符(如 . , * , + , ? 等)和字符类(如 [...] , [^...] , \d , \w 等)

2.匹配模式

使用正则表达式可以进行文本匹配,查找,替换等操作。

匹配模式可以包括固定文本和通配符,用于定义要匹配的模式。

量词(如 *,+,?,{n},{n,m} 等)用于指定匹配的次数、

3.常见的正则表达式应用场景

邮箱验证:匹配邮箱的正则表达式可以验证邮箱的合法性。

密码验证:通过正则表达式可以验证密码的复杂度要求。

⼿机号验证:使⽤正则表达式可以验证⼿机号码的格式是否正确。

URL 提取:通过正则表达式可以从⽂本中提取出符合 URL 格式的链接。

HTML 标签处理:正则表达式可以⽤于匹配和处理 HTML 标签。

字符串替换:使⽤正则表达式可以进⾏字符串的替换操作。

4.常见的正则表达式方法

test() :测试字符串是否匹配正则表达式。

exec() :在字符串中查找匹配的⽂本,并返回匹配结果

match() :在字符串中查找匹配的⽂本,并返回所有匹配结果的数组

search() :在字符串中查找匹配的⽂本,并返回第⼀个匹配结果的索引

replace() :将匹配的⽂本替换为指定的字符串。

split() :根据正则表达式将字符串拆分为数组

// 示例字符串
const str = 'Hello, World! This is a test string.';

// test(): 测试字符串是否匹配正则表达式
const regex1 = /test/;
console.log(regex1.test(str)); // true

// exec(): 在字符串中查找匹配的⽂本,并返回匹配结果
const regex2 = /is/g;
let result;
while ((result = regex2.exec(str)) !== null) {
 console.log(result[0]); // "is" (每次循环匹配的结果)
 console.log(result.index); // 匹配的起始索引
}

// match(): 在字符串中查找匹配的⽂本,并返回所有匹配结果的数组
const regex3 = /o/g;
console.log(str.match(regex3)); // ["o", "o", "o"]

// search(): 在字符串中查找匹配的⽂本,并返回第⼀个匹配结果的索引
const regex4 = /World/;
console.log(str.search(regex4)); // 7

// replace(): 将匹配的⽂本替换为指定的字符串
const regex5 = /test/;
const newStr = str.replace(regex5, 'replacement');
console.log(newStr); // "Hello, World! This is a replacement string."

// split(): 根据正则表达式将字符串拆分为数组
const regex6 = /[,!\s]/;
const arr = str.split(regex6);
console.log(arr); // ["Hello", "World", "This", "is", "a", "test", "string"]

5.贪婪匹配和非贪婪匹配

贪婪匹配是指正则表达式默认匹配尽可能长的字符串

非贪婪匹配是指正则表达式匹配尽可能短的字符串,在量词后面加上实现非贪婪匹配。


常⻅的正则表达式⾯试题考点

1. 什么是正则表达式?

正则表达式是⼀种⽤于匹配和操作字符串的模式,它由字符和特殊字符组成,⽤于定义匹配规则。

2. 正则表达式的创建⽅式有哪些?

正则表达式可以通过两种⽅式创建:

字⾯量⽅式:使⽤两个斜杠 // 将正则表达式包围起来,如: /pattern/ 。

构造函数⽅式:使⽤ RegExp() 构造函数创建,接受⼀个字符串参数,如: new RegExp("pattern") 。

3. 常⻅的正则表达式修饰符有哪些?

常⻅的正则表达式修饰符包括:

i :不区分⼤⼩写匹配。

g :全局匹配,找到所有匹配项。

m :多⾏匹配,将 ^ 和 $ 应⽤到每⼀⾏。

4. 常⽤的正则表达式元字符有哪些?

常⽤的正则表达式元字符包括:

. :匹配除换⾏符以外的任意字符。

^ :匹配字符串的开始位置。

$ :匹配字符串的结束位置。

\d :匹配数字字符。

\w :匹配字⺟、数字、下划线。

\s :匹配空⽩字符。

5. 如何匹配邮箱地址?

/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

6. 如何匹配⼿机号码?

/^1[3456789]\d{9}$/;

7. 如何匹配 URL 地址?

/^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})(\/[\w.-]*)*\/?$/;

8. 如何提取字符串中的数字部分?

/\d+/g;

9. 如何验证密码的复杂度要求?

例如:包括⾄少包含⼀个⼤写字⺟、⼀个⼩写字⺟和⼀个数字,⻓度为8-20个字符:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,20}$/;

10. 如何匹配⽇期格式(YYYY-MM-DD)?

如:YYYY-MM-DD

/^\d{4}-\d{2}-\d{2}$/;

11. 如何匹配 IP 地址?

/^((25[0-5]|2[0-4]\d|[01]?\d{1,2})\.){3}(25[0-5]|2[0-4]\d|[01]?\d{1,2})$/;

12. 如何匹配 HTML 标签?

/<[^>]+>/g;

13. 如何移除字符串中的 HTML 标签?

str.replace(/<[^>]+>/g, '');

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值