美文网首页
JavaScript 中的正则表达式

JavaScript 中的正则表达式

作者: Rui哥 | 来源:发表于2019-07-08 16:33 被阅读0次

    一、正则表达式声明

    1、通过构造函数定义

    var 变量名 = new RegExp(/表达式/);
    

    2、通过直接量定义 (较为常用)

      var 变量名 = /表达式/;
    

    3、正则表达式的组成 (总结)
    由一些 普通字符和元字符组成, 普通字符就是字母和数字, 元字符就是具有特殊意义的字符

    4、test() 方法
    正则对象方法, 检测测试字符串是否符合该规定, 返回 true 和 false

    语法:

       Boolean rst = 表达式.test('要检验的内容');
    
       eg: 验证 567 符不符合 \d 的规范
            console.log(/\d/.test(567));
    

    5、 预定义类

    .  [^\n\r] 除了换行和回车之外的任意字符 ("" 不行)
     \d [0-9] 数字字符
    \D [^0-9] 非数字字符
    \s [\t\n\x0B\f\r] 空白字符
    \S [^\t\n\x0B\f\r] 非空白字符
    \w [a-zA-Z0-9] 单词字符
    \W [^a-zA-Z0-9] 非单词字符
    

    5.1、 特殊字符

    \t   制表符
    \n   换行符
    \r   回车符
    \f   换页符
    \b   与回退字符
    \v   垂直制表符
    \0   空字符
    

    6、 简单类(正则: // 中什么特殊符号都不写, 和[]的加入)
    (1)、 /string/.test("string") 必须是完整的, 只多不能少, 依据话, 只要包含andy 就行

    /andy/.test("andy")        // true
    /andy/.test("andylv")      // true
    /andy/.test("an")          //false
    

    (2)、 /[string]/.test("string") 只要包含里面的任何一个就可以 [] 表示其中一个

    /[andy]/.test('andy')     // true
    /[andy]/.test('an')       // true
     /[andy]/.test('ady')      // true
    /[andy]/.test('anll')     // true
    /[andy]/.test('assd')      // true
    /[andy]/.test('ss')        // false
    

    7、 负向类 (不能是其中的整体或者一部分)

    中括号内, 前面加个元字符 ^ 进行取反, 不是括号里面的字符(一部分也不行)
    (可以不够, 但是不能多)
    (不够和正好, 返回false, 多了或者没有返回true)
    console.log(/[^abc]/.test('a'));
    console.log(/[^abc]/.test('gg'));
    
    注意: 这个符号 ^  一定写在括号里面
    

    8、范围类

    有时匹配的东西过多, 而类型又相同, 全部输入太麻烦, 我们就可以在中间加个 横线 -
    console.log(/[a-z]/.test('a'));
    console.log(/[A-Z]/.test('A'));
    

    9、组合类

    用中括号匹配不同类型的单个字符
    console.log(/[a-m1-5]/.test('b'));
    

    10、正则边界 (重点)

    ^ 会匹配行或者字符串的起始位置
    
    注意: ^ 只有在[] 中才表示非!, 这里表示开始
    
    $ 会匹配行或者字符串的结尾位置
    ^$ 在一起, 表示必须是这个 (精准匹配)
    
    eg: 
    console.log(/lily/.test('lilyname')); // true
    console.log(/^lily$/.test('lily')); // true
    console.log(/^lily$/.test('ly'));  //false
    console.log(/^andy$/.test('andy')); // true
    这个的最终意思是说: 必须是 'andy' 这4个字母
    

    11、 量词 (重点) * + ? {}
    (多个字母, 重复最后一个)

    * 贪婪 重复0次或更多, (>=0)
    + 懒惰 重复一次或更多, (>=1)
    ? 占有 重复0次或一次, (0||1) 要么有要么1次
    {n} 重复n次的意思, 可以有n个 (=n)  console.log(/[0-6]{6}/.test('123456')); 表示必须是6位数字
    {n,} 表示至少重复n次, (>=n)
    {n,m} 重复出现的次数, (n<=x<=m)
    
    * 相当于 {0,}
    + 相当于 {1,}
    ? 相当于 {0,1}
    
     | 表示或者, eg a|b 表示要么a 要么b 要么ab
    eg:
    console.log(/^abc$|^xyz$/.test('abc'));  true  // 表示满足前面一个 ^abc$ 或者 后一个 ^xyz$ 都可以
    console.log(/(abc)|(xyz)/.test('abxy')); false  // 表示要么是abc 要么是xyz
    

    12、案例
    (1)匹配 座机号:

    var reg = /^(0\d{2}-\d{8})|(0\d{3}-\d{7})$/;
    var reg2 = /^(0\d{2}-\d{8})$|^(0\d{3}-\d{7})$/;
    

    (2)匹配中文

    获取正则内容

    var reg = /[1-5][3]/;
    var rst = reg.exec('12345678');
    

    相关文章

      网友评论

          本文标题:JavaScript 中的正则表达式

          本文链接:https://www.haomeiwen.com/subject/plkahctx.html