zoukankan      html  css  js  c++  java
  • js正则表达式高级用法

    1. 声明词量

    1. 正向声明

    指定匹配模式后面的字符必须被匹配,但又不返回这些字符。语法格式如下:

    匹配模式 (?= 匹配条件)

    let regex = /(d)+(?=d)/g
    let str = 'd123abc456def'
    let a;
    while(a = regex.exec(str)){
    	console.log(a) // expect output: [ '456', '6', index: 7, input: 'd123abc456def', groups: undefined ]
    }
    
    

    2. 反向声明

    与正向声明匹配相反,指定接下来的字符都不必被匹配。语法格式如下:

    匹配模式(?! 匹配条件)

    let regex = /(d){3}(?!d)/g
    let str = 'd123abc456def'
    let a;
    while(a = regex.exec(str)){
    	console.log(a) // expect output: [ '123', '3', index: 1, input: 'd123abc456def', groups: undefined ]
    }
    
    

    2. 多次匹配:

    想要用exec方法在一个字符串里面多次匹配上某个正则表达式,需要使用while循环,如下:

    let regex = /d+/g
    let str = 'd123abc456def'
    let a;
    while(a = regex.exec(str)){
    	console.log(a)
    }
    // expected output : 
    // [ '123', index: 1, input: 'd123abc456def', groups: undefined ]
    // [ '456', index: 7, input: 'd123abc456def', groups: undefined ]
    

    3. 这里附加一下正则表达式的基本用法:

    1. test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
    var reg = /(d{4})-(d{2})-(d{2})/;
    var dateStr = '2018-04-18';
    reg.test(dateStr);  //true
    

    下面的方法都是字符串相关的方法:

    1. match()方法用于在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
    let regex = /d+/g
    let str = 'd123abc456def'
    console.log(str.match(regex)) // [ '123', '456' ]
    
    1. replace() 字符串替换,并返回替换后的结果(原字符串不做修改):
    let regex = /d+/g
    let str = 'd123abc456def'
    
    console.log(str.replace(regex,'HELLO')) // dHELLOabcHELLOdef
    
    1. search() 方法。 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
    let regex = /d+/g
    let str = 'd123abc456def'
    
    console.log(str.search(regex)) // 1
    console.log(str.search(regex)) // 1
    
    1. 面试常见易错点

    2. 支持正则表达式的方法有:
      split、match、replace

    var myString = "Hello 1 word. Sentence number 2.";
    var splits = myString.split(/(d)/);
    
    console.log(splits); // [ "Hello ", "1", " word. Sentence number ", "2", "." ]
    
    1. 取反也要匹配一个字母
    let reg = /[^abc]/
    
    reg.exec('brick') 
    
    // ['r', index: 1, input: 'brick', groups: undefined]
    // 不匹配abc当中任意一个字母,但是必须匹配一个字母
    

  • 相关阅读:
    DELPHI中GetTickCount 函数的应用
    Delphi 中 StrToIntDef 函数的应用
    TeeChart 动态建曲线
    历遍指定文件夹下的文件
    DELPHI 获取错误信息
    delphi播放flash
    C# 获取当前路径方法
    DELPHI 修改系统分辨率
    SQL字符串处理函数 Yang
    Linux基本操作 Yang
  • 原文地址:https://www.cnblogs.com/lyzz1314/p/15290336.html
Copyright © 2011-2022 走看看