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 匹配空白字符

元字符说明
[\b]回退并删除一个字符
\f换页符
\n换行符
\r回车符
\t制表符
\v垂直制表符
const str = '01 test01 \n\r' + '02 test02 \n\r' + '03 test03';
console.log(str);
/*01 test01 ↵
 *02 test02 ↵
 *03 test03
*/
const reg = /\n\r/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 = [];\nconsole.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\n\r\t\v]
\S匹配任何一个非空白字符,等价于 [^\f\n\r\t\v]

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

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

1. 使用十六进制值

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

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

2. 使用八进制值

使用前缀 \0 表示。

4.4 使用 POSIX 字符类

JavaScript 不支持。

转载于:https://www.cnblogs.com/lwl0812/p/11216931.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值