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

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

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

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

const str =
  'sales1.xls
' +
  'orders3.xls
' +
  'sales2.xls
' +
  'sales3.xls
' +
  'apac1.xls
' +
  'europe2.xls
' +
  'na1.xls
' +
  'na2.xls
' +
  'ca1.xls
' +
  '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
' +
  'orders3.xls
' +
  'sales2.xls
' +
  'sales3.xls
' +
  'apac1.xls
' +
  'europe2.xls
' +
  'na1.xls
' +
  'na2.xls
' +
  'ca1.xls
' +
  '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
' +
  'orders3.xls
' +
  'sales2.xls
' +
  'sales3.xls
' +
  'apac1.xls
' +
  'europe2.xls
' +
  'na1.xls
' +
  'na2.xls
' +
  'ca1.xls
' +
  'sam.xls
' +
  '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
' +
  'orders3.xls
' +
  'sales2.xls
' +
  'sales3.xls
' +
  'apac1.xls
' +
  'europe2.xls
' +
  'na1.xls
' +
  'na2.xls
' +
  'ca1.xls
' +
  'sam.xls
' +
  '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
' +
  'orders3.xls
' +
  'sales2.xls
' +
  'sales3.xls
' +
  'apac1.xls
' +
  'europe2.xls
' +
  'na1.xls
' +
  'na2.xls
' +
  'ca1.xls
' +
  'sam.xls
' +
  '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
' +
  'orders3.xls
' +
  'sales2.xls
' +
  'sales3.xls
' +
  'apac1.xls
' +
  'europe2.xls
' +
  'na1.xls
' +
  'na2.xls
' +
  'ca1.xls
' +
  'sam.xls
' +
  '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