03. 匹配一组字符(学习笔记)

3. 正则表达式必知必会-匹配一组字符

3.1 匹配多个字符中的某一个

只想匹配 na sa,不想匹配其他的。

const str =
  'sales1.xls\n' +
  'orders3.xls\n' +
  'sales2.xls\n' +
  'sales3.xls\n' +
  'apac1.xls\n' +
  'europe2.xls\n' +
  'na1.xls\n' +
  'na2.xls\n' +
  'ca1.xls\n' +
  'sa1.xls';
const reg = /.a.\.xls/g;
let match;
while ((match = reg.exec(str))) {
  console.log(match[0]);
}
// na1.xls
// na2.xls
// ca1.xls <-- 会匹配到除 na sa 之外的
// sa1.xls

使用元字符[和]来定义一个字符集合。

const str =
  'sales1.xls\n' +
  'orders3.xls\n' +
  'sales2.xls\n' +
  'sales3.xls\n' +
  'apac1.xls\n' +
  'europe2.xls\n' +
  'na1.xls\n' +
  'na2.xls\n' +
  'ca1.xls\n' +
  'sa1.xls';
const reg = /[ns]a.\.xls/g; // <-- 使用了 [] 定义一个字符集
let match;
while ((match = reg.exec(str))) {
  console.log(match[0]);
}
// na1.xls
// na2.xls
// sa1.xls

3.2 利用字符集合区间

只想筛选出 sa1 na1 na2 等,但是会筛选出 sam。

const str =
  'sales1.xls\n' +
  'orders3.xls\n' +
  'sales2.xls\n' +
  'sales3.xls\n' +
  'apac1.xls\n' +
  'europe2.xls\n' +
  'na1.xls\n' +
  'na2.xls\n' +
  'ca1.xls\n' +
  'sam.xls\n' +
  'sa1.xls';
const reg = /[ns]a.\.xls/g;
let match;
while ((match = reg.exec(str))) {
  console.log(match[0]);
}
// na1.xls
// na2.xls
// sam.xls <-- 会筛选出 sam.xls
// sa1.xls

设定一个字符集,只匹配 sa1 na1 等。

const str =
  'sales1.xls\n' +
  'orders3.xls\n' +
  'sales2.xls\n' +
  'sales3.xls\n' +
  'apac1.xls\n' +
  'europe2.xls\n' +
  'na1.xls\n' +
  'na2.xls\n' +
  'ca1.xls\n' +
  'sam.xls\n' +
  'sa1.xls';
const reg = /[ns]a[0123456789]\.xls/g; // <-- 设定 [0123456789] 字符集
let match;
while ((match = reg.exec(str))) {
  console.log(match[0]);
}
// na1.xls
// na2.xls
// sa1.xls

正则表达式提供了一个元字符 -(连字符)来定义字符区间。

const str =
  'sales1.xls\n' +
  'orders3.xls\n' +
  'sales2.xls\n' +
  'sales3.xls\n' +
  'apac1.xls\n' +
  'europe2.xls\n' +
  'na1.xls\n' +
  'na2.xls\n' +
  'ca1.xls\n' +
  'sam.xls\n' +
  'sa1.xls';
const reg = /[ns]a[0-9]\.xls/g; // <-- 用连字符 - 定义字符区间
let match;
while ((match = reg.exec(str))) {
  console.log(match[0]);
}
// na1.xls
// na2.xls
// sa1.xls
  • A-Z 匹配从 A 到 Z 的所有大写字母
  • a-z 匹配从 a 到 z 的所有小写字母
  • A-z 匹配从 ASCII 字符 A 到 ASCII 字符 z 的所有字母。

A-z 这个模式不常用,因为它还包含了 [ 和 ^ 等在 ASCII 字符表里排列在 Z 和 a 之间的字符。

3.3 取非匹配

除了字符集里的字符,其他都可以匹配。

用元字符 ^ 来表示对一个字符集取非。

const str =
  'sales1.xls\n' +
  'orders3.xls\n' +
  'sales2.xls\n' +
  'sales3.xls\n' +
  'apac1.xls\n' +
  'europe2.xls\n' +
  'na1.xls\n' +
  'na2.xls\n' +
  'ca1.xls\n' +
  'sam.xls\n' +
  'sa1.xls';
const reg = /[ns]a[^0-9]\.xls/g; // <-- 对字符集 [0-9] 取非
let match;
while ((match = reg.exec(str))) {
  console.log(match[0]);
}
// sam.xls

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值