美文网首页
JS有关正则的常用方法归纳

JS有关正则的常用方法归纳

作者: vinterx | 来源:发表于2019-01-22 17:37 被阅读0次

    一、正则的方法

    正则在项目中是经常用到的,但是有时候方法内的参数容易搞混淆,不知道是放正则还是字符串,特地归类一下这些方法,首先介绍一下正则的两种写法:
    调用RegExp构造函数

    let reg = new RegExp(‘自定义的正则’,‘gi’)
    let regs = new RegExp(/自定义的正则/,‘gi’)
    
    //  如
    let regex = new RegExp(/^[a-zA-Z]+[0-9]*\W?_$/, "gi");
    let regex = new RegExp("^[a-zA-Z]+[0-9]*\\W?_$", "gi");
    

    字面量书写正则表达式

    let reg = /自定的正则/gi
    
    //  如
    let regex = /^[a-zA-Z]+[0-9]*\W?_$/gi;
    

    1、test()

    reg.test(str)
    //  能匹配到,则返回true,否则返回false
    
    

    注意:如果使用同一个\color{red}{全局}正则表达式去匹配两次字符串,第一次匹配后会改变正则表达式的lastIndex值,如

    var regex = /foo/g;
    
    // regex.lastIndex is at 0
    regex.test('foo'); // true
    
    // regex.lastIndex is now at 3
    regex.test('foo'); // false
    
    

    2、exec()

    这方法不怎么常用

    var reg = /ab/g
    
    var str = 'abdfdretabsgdg'
    var result = reg.exec(str)
    console.log(result)
    //  能匹配到返回数组,否则返回null
    
    

    注意:该方法很依赖全局‘g’否则只执行一次

    二、字符串的方法

    字符串的方法比较多,这里主要讲解字符串模式的匹配方法。\color{red}{参数均为正则表达式}

    1、match()

    该方法原理和正则的exec方法基本相似,很依赖全局‘g’,并且匹配到则返回数组,否则返回null,但是如果全局搜索则会将匹配结果全部返回到一个数组,而exec则需要一次一次的匹配,将每次返回的数组合并到一个数组中。

    var reg = /ab/g
    var str = 'abdfdretabsgdg'
    var result = str.match(reg)  //  ['ab','ab']
    var cc = reg.exec(str)  //  ['ab']
    console.log(result, cc)
    
    

    2、search()

    search() 方法不执行全局匹配,\color{red}{它将忽略标志 g}。它同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。如果匹配到返回对应下标,否则返回-1。

    var reg = /ab/i
    var str = 'abdfdretabsgdg'
    var result = str.search(reg)
    var cc = str.search(reg)
    console.log(result, cc) //  0 0
    
    

    3、replace()

    两个参数,均为必须,参数1为正则表达式,参数2为想替换的内容。如果没有全局‘g’,则只替换找到的第一个。

    var reg = /ab/gi
    var str = 'abdfdretabsgdg'
    var result = str.replace(reg, 'cc')
    console.log(result)   //  'ccdfdretccsgdg'
    
    

    4、split()

    将字符串按照一个字符串或正则表达式切割成指定数组,第二个参数可选,可指定返回最大的数组长度。

    var str = 'abdfdrccetabccsgdccg'
    var result = str.split('cc')
    console.log(result) //  ["abdfdr", "etab", "sgd", "g"]
    
    

    好记性不如烂笔头

    相关文章

      网友评论

          本文标题:JS有关正则的常用方法归纳

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