正则表达式系列(元字符)

"本文详细介绍了正则表达式中的一些常见元字符,包括字符集合([])、单词边界(和B)以及捕获组(()). 字符集合用于匹配一组字符中的任意一个,可以与^结合使用实现排除匹配。单词边界匹配单词与非单词字符之间的位置,B则匹配非单词边界。捕获组允许我们匹配并获取特定模式,便于进一步处理。通过实例代码展示了这些元字符的实际应用。"
摘要由CSDN通过智能技术生成

前言

此篇文章主要对部分易错的元字符进行梳理,主要包括[],\b和\B,()。

一. 字符集合([])

const str = 'plain';

const rg = /[ain]/g;

const res = str.match(rg);

console.log(res); // [ 'a', 'i', 'n' ]

匹配所包含的任意一个字符。

重点:

  1. 一次只能匹配一个字符;
  2. 或的逻辑,/[ain]/g 相当于 /a | i | n/g,匹配符合条件的任一 一项均可。

常常搭配^使用

const str = 'plain';

const rg = /[^ain]/g;

const res = str.match(rg);

console.log(res); // [ 'p', 'l' ]

还是只匹配一项,且匹配的该项不能是条件的任意一 一项。

二. 单词边界和非单词边界

\b: 匹配一个单词边界,也就是指单词和非单词的位置。
在这里插入图片描述
\B: 匹配非单词边界。‘er\B’ 能匹配 “verb” 中的 ‘er’,但不能匹配 “never” 中的 ‘er’。

三. ()

const str = 'js-pLus';
const rg = /-(p)(L)/g;
const res = str.replace(rg, (node, $1, $2) => {
  console.log($1, $2); // p, L
  const tempItem = `-${$1.toUpperCase()}${$2.toLowerCase()}`;
  return tempItem;
});
console.log(res); // js-Plus

匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合

const str = 'aabb1233ccff';
const rg = /([a-z])\1([a-z])\2/g;
const res = str.match(rg);
console.log(res, 'res'); // [ 'aabb', 'ccff' ]

在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 ‘(’ 或 ‘)’,且具有对匹配到的具体字符的记忆功能:

\1表示重复正则第一个圆括号内匹配到的内容
\2表示重复正则第二个圆括号内匹配到的内容
比如有以下正则:
([a-z])([a-z])\2\1
则可以匹配字符串abba
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值