04. 使用元字符(学习笔记)

4. 正则表达式必知必会-使用元字符

4.1 对特殊字符进行转义

. 表示匹配任意一个单字字符。
[] 表示匹配字符集

const str = 'const arr = []; if (arr[0] === 0) {}';
const reg = /arr[0]/g; // <-- 想匹配 arr[0] 这个内容,但是 [0] 表示包含 0 的字符集,只能匹配 arr0
let match;
while ((match = reg.exec(str))) { // <-- 匹配不到
  console.log(match);
}

加上反斜杠可以将元字符转义。

const str = 'const arr = []; if (arr[0] === 0) {}';
const reg = /arr[0]/g; // <-- 将 [] 进行转义
let match;
while ((match = reg.exec(str))) {
  console.log(match);
}
// ["arr[0]", index: 20, input: "const arr = []; if (arr[0] === 0) {}", groups: undefined]

也是一个元字符,使用它本身时,也需要转义:。

在一个完整的正则表达式里, 后面永远跟着一个字符,否则会报错。

4.2 匹配空白字符

元字符 说明
[] 回退并删除一个字符
f 换页符
换行符
回车符
制表符
v 垂直制表符
const str = '01 test01 

' + '02 test02 

' + '03 test03';
console.log(str);
/*01 test01 ↵
 *02 test02 ↵
 *03 test03
*/
const reg = /

/g;
console.log(str.replace(reg, '')); // 01 test01 02 test02 03 test03

4.3 匹配特定的字符类型

4.3.1 匹配数字(与非数字)

元字符 说明
d 匹配任何一个数字字符,等价于 [0-9]
D 匹配任何一个非数字字符,等价于 [^0-9]
const str = 'const arr = [];
console.log(arr[0], arr[1], arr[2]);';
const reg = /arr[d]/g;
let match;
while ((match = reg.exec(str))) {
  console.log(`匹配项: ${match[0]}, index: ${match.index}`);
}
// 匹配项: arr[0], index: 28
// 匹配项: arr[1], index: 36
// 匹配项: arr[2], index: 44

4.3.2 匹配字母和数字(与非字母和数字)

元字符 说明
w 匹配任何一个字母数字字符(不区分大小写)或下划线字符,等价于 [a-zA-Z0-9_]
W 匹配任何一个非字母数字字符或非下划线字符,等价于 [^a-zA-Z0-9_]

4.3.3 匹配空白字符(与非空白字符)

元字符 说明
s 匹配任何一个空白字符,等价于 [f v]
S 匹配任何一个非空白字符,等价于 [^f v]

注意:[] 比较特殊,没有包含了 s 中。

4.3.4 匹配十六进制或八进制数值

1. 使用十六进制值

正则表达式里,十六进制要用前缀 x 来表示。

x0A 对应于 ASCII 码中的 10(换行符),等价于 。

2. 使用八进制值

使用前缀 表示。

4.4 使用 POSIX 字符类

JavaScript 不支持。

原文地址:https://www.cnblogs.com/lwl0812/p/11216931.html