zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    java 删除文件目录
    java导出echart图到excel 多张图片导出
    java导出sql文件
    split方法使用
    jqgrid列表添加单选框
    会消失的链接
    运用javascript做出链接类特效
    创建守护进程的步骤
    ext2文件系统
    C++枚举类型enum
  • 原文地址:https://www.cnblogs.com/lwl0812/p/11216920.html
Copyright © 2011-2022 走看看