美文网首页
正则表达式

正则表达式

作者: 香蕉不拿呢 | 来源:发表于2021-12-14 15:35 被阅读0次

    正则表达式经常用到,这篇文件做一下总结记录

    一、字符

    字符:元字符和字面量字符
    元字符是表示特殊含义的字符,包括:^ $ . [ ] { } - ? * + ( ) | \\字符。
    字面量字符: 其他字符在表达式中都表示其原来的含义,为字面量字符。

    1 位置字符

    ^:匹配字符串开始位置。
    $:匹配字符串结束位置。

    2 点字符

    .:匹配除回车(\r)、换行(\n) 、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符。

    3 选择符

    |: 表示‘或’关系,即/apple|banana/表示匹配apple或banana

    4 转义符

    \: 那些有特殊含义的元字符,如果要匹配它们本身,就需要在它们前面要加上反斜杠。

    5 特殊字符

    一些不能打印的特殊字符

    \n 匹配换行键。
    \r 匹配回车键。
    \t 匹配制表符 tab(U+0009)。
    \v 匹配垂直制表符(U+000B)。
    \f 匹配换页符(U+000C)。
    
    6 字符类

    []:有一系列字符可供选择,只要匹配其中一个就可以了

    6.1 脱字符(^)

    脱字符只有在字符类的第一个位置才有特殊含义,否则就是字面含义。
    [^abc]表示匹配不是a、b、c字符的其他字符
    [^a-z]表示匹配不是a、b、c....到z字符的其他字符

    6.2 连字符(-)

    对于连续序列的字符,连字符(-)用来提供简写形式,表示字符的连续范围,[0-9],[a-z],[A-Z]

    7 预定义模式

    某些常见模式的简写方式

    \d 匹配0-9之间的任一数字,相当于[0-9]。
    \D 匹配所有0-9以外的字符,相当于[^0-9]。
    \w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]。
    \W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]。
    \s 匹配空格(包括换行符、制表符、空格符等),相等于[ \t\r\n\v\f]。
    \S 匹配非空格的字符,相当于[^ \t\r\n\v\f]。
    \b 匹配词的边界。
    \B 匹配非词边界,即在词的内部。
    
    8 重复类{}

    精确匹配次数
    {n}表示恰好重复n次,{n,}表示至少重复n次,{n,m}表示重复不少于n次,不多于m次。

    9 量词符

    ?:出现0次或1次,等同于{0, 1}
    *:出现0次或多次,等同于{0,}。
    +:出现1次或多次,等同于{1,}。

    10 修饰符

    i:忽略大小写
    g:全局匹配

    let str = "banana"
    // 单个修饰符
    /Banana/.test(str)  // false
    /Banana/i.test(str)  // true
    str.replace(/a/,'x')  // 'bxnana'
    str.replace(/a/g,'x')  // 'bxnxnx'
    // 多个修饰符
    str.replace(/A/ig,'x')  // 'bxnxnx'
    str.replace(/A/g,'x')  // 'banana'
    
    11 贪婪匹配

    三个量词符(?*+),默认情况下都是最大可能匹配,即匹配直到下一个字符不满足匹配规则为止
    *?:出现0次或多次,匹配时采用非贪婪模式
    +?:出现1次或多次,匹配时采用非贪婪模式

    二、实例方法
    1 RegExp正则对象方法

    RegExp.prototype.test() 执行一个检索,用来查看正则表达式与指定的字符串是否匹配。返回 true 或 false。
    RegExp.prototype.exec() 执行一个搜索匹配。返回一个结果数组或 null。

    let str = 'banana'
    let regExp = /^b[a-z]?/
    regExp.test(str)    // true
    
    let regExp = /an/g
    let regExp2 = /(b)a(n)([a-z])/g
    regExp.exec(str)    // [an]
    regExp2.exec(str)   // ["bana", "b", "n", "a"]
    
    2 String字符串方法

    String.prototype.match() // 检索返回一个字符串匹配正则表达式的结果
    String.prototype.search() // 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1
    String.prototype.replace() // 返回替代模式所取代的新的字符串
    String.prototype.split() // 返回源字符串以分隔符出现位置分隔而成的一个 Array

    相关文章

      网友评论

          本文标题:正则表达式

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