正则表达式基础知识3

67 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情

点元字符

点匹配任意字符除了换行符。 效果如下,.是任意字符,+表示贪婪匹配。所以匹配了整个字符串

    var str = `saobang@163.com`
    var reg = /.+/;
    console.log(str.match(reg))
    // ['saobang@163.com', index: 0, input: 'saobang@163.com', groups: undefined]

但是不能匹配换行符号,下面字符串中有空格,但是输入结果和上面一样,只匹配了前半段字符串,说明它遇到换行就结束匹配了。这种情况可以添加一个模式s,就是忽略空白符号,认为是一行字符串

    var str = `saobang@163.com
    saobangshishizebang`
    var reg = /.+/s;
    console.log(str.match(reg))

或者增加一个\s的规则就可以匹配一整段字符串了

    var str = `saobang@163.com
    saobangshishizebang`
    var reg = /(.|\s)+/;
    console.log(str.match(reg))

巧妙的匹配任意字符

使用中括号\d和\D组合,或者是中括号\s\S组合

    var str = `shizebangshiwoerzi
    `
    var reg = /[\d\D]+/;
    console.log(str.match(reg))

举例如下,假如想匹配div之间的任意字符,写法如下,假如中间只写.+,不行,因为遇到了换行符号就不匹配了,除非加上s模式,或者加上\s的规则

    var str = `
    
    <div>
        shizebangshiwoerzi

        </div>
    `
    var reg = /<div>[\d\D]+<\/div>/;
    console.log(str.match(reg))

匹配模式i和g

当我们匹配网址或者邮箱时,我们一般会忽略大小写,假如要匹配所有的关键字shi,忽略大小写,因为有的人按规范写,有的人不按规范,导致有大有小,匹配困难,这时候只需要在匹配模式上加入i,就可以实现

   var str = `shiShisHi@163.com`
    var reg = /(shi)+/i;
    console.log(str.match(reg))

g模式,一般是比较常用的模式,可以匹配全局符合正则表达式的字符,一般在替换时有着强大作用,如下代码是匹配所有shi,忽略大小写,里面所有的shi都可以被匹配。

  var str = `shi212Shi121212sHi@163.com`
    var reg = /(shi)+/ig;
    console.log(str.match(reg))

假设想把上面的shi全部替换成shizebang,

 var str = `shi212Shi121212sHi@163.com`
    var reg = /(shi)+/ig;
    console.log(str.replace(reg,'shizebang'))