美文网首页
3. 【正则】量词

3. 【正则】量词

作者: 一土二月鸟 | 来源:发表于2021-06-22 14:00 被阅读0次

    n+ 代表匹配多个或1个符合n的字符

    • +有些类似g全局匹配,但不同的是会将连续符合规则的字符连接在一起。
    • 正则具有两个特性:
    • 不回头:匹配过的字符,不会再匹配
    • 贪婪模式:能匹配多则不匹配少(针对量词+才有贪婪?)
    var str = 'abc'
    var reg = /\w+/g
    str.match(reg) // ["abc"]
    
    var reg1 = /\w/g
    str.match(reg) // ["a", "b", "c"]
    
    var reg2 = /\w+/
    str.match(reg) // ["abc"]
    
    var str = 'a+bc'
    var reg = /\w+/g
    str.match(reg) // ["a", "bc"]
    
    var str = 'a+bc'
    var reg = /\w+/
    str.match(reg) // ["a"]
    

    n* 代表匹配多个或0个符合n的字符

    • 和+的区别是,匹配出来的结果比+多了一个空字符串
    var str = "abc"
    var reg = /\w*/
    str.match(reg) // ["abc"]
    
    var str = "abc"
    var reg = /\w*/g
    str.match(reg) // ["abc", ""]
    
    var str = "abc+-"
    var reg = /\w*/g
    str.match(reg) // ["abc", "", "", ""] // 第一个"" 为匹配+的结果,第二个""为匹配-的结果,第三个""为匹配的最后一位
    

    n? 代表匹配1个或0个符合n的字符

    "ab".match(/\w?/g) // ["a", "b", ""]
    

    {x,y} 代表区间,从x到y个

    • x需小于y
    • 如果不写y,{x,}代表x到正无穷
    • 如果不写, {x}代表个数为x个
    "abc".match(/\w{1,2}/g) // ["ab", "c"]
    

    ^n代表匹配以n开头的字符

    // 匹配出以字母开头后面是数字的字符
    "a1bc".match(/^\w\d/g) // [ "a1" ]
    

    n$代表匹配以n结尾的字符

    // 匹配出以字母结尾前面是数字的字符
    "a1a1c".match(/\d\w$/g) // [ "1c" ]
    

    x(?=y) 代表匹配x后面是y的字符,最终将x匹配出来

    • x(?!y)代表匹配x后面不是y的字符,最终将x匹配出来
    "ab234ab".match(/a(?=b)/g)  // ["a", "a"]
    

    总结

    • n{1,} === n+
    • n{0,} === n*
    • n{0,1} === n?

    parctice

    • 匹配以ab开头并且以ab结尾的任意字符
    "ab564DFab".match(/^ab[\w\W]*ab$/g) // ["ab564DFab"]
    "ab564DFab".match(/^ab.*ab$/g) // ["ab564DFab"]
    
    • 匹配以ab开头或以ab结尾的任意字符
    "4ab564DFab".match(/(^ab.*)|(.*ab$)/g) // ["4ab564DFab"]
    
    • 以138开头的手机号码
    /^138\d{8}$/.test("13812345678") //true
    

    相关文章

      网友评论

          本文标题:3. 【正则】量词

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