• new RegExp / / 正则


    正则(RegExp)

    定义:正确的规则 它是专门来操作(检:检查,索:搜索)(模糊范围的)字符串的一种规则。 
    简写: /规则和字符串(不带引号的字符串)/     /d/ 
    标准写法: new RegExp ( // || 带引号的字符串 , 修饰符 )

        第一个参数:可以放字符串或者正则,注意:如果是字符串形式的元字符,记得要转意。

        第二个参数:修饰符

        一般是遇到 变量或者参数 的时候,用标准写法。

    转义符:   
    可以带任意的符号,只不过有些符号是有特殊含义的

    元字符:(普通元字符:在正则当中,字面量方式创建的,两个斜杠中,除了特殊元字符和量词元字符以外的字符都叫做普通元字符)

    特殊元字符: 
    匹配一个换行符 
    匹配一个回车符 
    f 匹配一个换页符 
    匹配一个制表符 
    v 匹配一个垂直制表符 
    x 
    ……. 
    d :匹配0-9之间的任意一个数字 
    D :除了0-9之间的任意字符 
    w :匹配数字、字母、下划线,中的任意一个字符,[0-9a-zA-Z] 
    W :除了数字,字母,下划线以外的任意字符 
    : 匹配一个边界 ‘box tag’  (文字是没有边界的,比如:你好,中文的感叹号!。)
    B:除了边界以外的其他字符 
    s 匹配任何不可见字符,包括空格、制表符、换页符等等 
    S 匹配任何可见字符 
    . 点 匹配除“ ”和” ”之外的任何单个字符。 
    um 重复子项: 1就代表重复第一个子项(只重复一次)。如果有第二个()子项,那么2就代表重复第二个子项,以此类推。

    量词元字符:

    {} 量词的范围

    {n,m} 最小是n,最大是m,(n,m都是一个非负整数)
    + 至少一个最多不限 {1,} 最小一次,最多无限
    ? 最小没有,最多一次{0,1}
    * 最小没有,最多无限 {0,}
     

    修饰符: 
    g:  global 全局匹配(找整个字符串) 
    i:   ignoreCase=>忽略大小写 
    m: multiline=> 多行匹配 一般是配合 来使用的 
    ^:  从字符串开头进行匹配
    $: 从字符串末尾进行匹配
    [ ]   范围,任意取其一,范围是遵循ascll码走的。例:w => [0-9a-zA-Z]的范围 

      中文的范围:[ u4e00 - u9fa5 ]  (记忆:有事100,有酒罚我)

    [^]   排除 
    ()    将( 和 ) 之间的表达式定义为“组”(group),并且将匹配这个表达式的字符保存到一个临时区域(一个正则表达式中最多可以保存9个),它们可以用 1 到9 的符号来引用。 
    |      将两个匹配条件进行逻辑“或”(or)运算。注意:这个元字符不是所有的软件都支持的。

    正则下的方法:

      1. //.test(字符串)  检验 
        字符串中有没有正则能匹配到的内容,返回值: true false
      2. //.exec(字符串)  捕获 
        方法用于检索字符串中的正则表达式的匹配。 
        返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
      3. str.match(//) -> 把匹配到的字符放入到数组中,不匹配返回null
      4. str.replace( " " | / /(要替换谁)," " | callback(替换成什么))
    callback 回调函数的特性:每匹配到一次就,调用一次函数
     
    ●替换字符串默认的callback参数
    第一个参数:  匹配到的字符
    第二个参数:索引
    第三个参数:整个字符串
    第四个参数开始往后都是:undefined
     
    ●如果有() 子项、分组
    第一个参数:匹配到的字符
    第二个参数之后:对应每一个 子项|分组。
    分组或者子项之后是:索引、整个字符串、undefined
     1   //找到字符串中哪个字母出现的次数最多,出现了几次?
     2   let str = 'dnsasudhusadssasdgsjdgddsjsddhaslfdiusadlhsdsfudahsful';
     3     let n = -Infinity; //负无穷大
     4     let name = '';
     5     let str2 = str.split('').sort().join('');
     6   
     7     str2.replace(/([a-z])1+/g,function($0,$1){ //$0本次匹配的字符,$1,第一个分组
     8         if(n < $0.length){
     9             n = $0.length;
    10             name = $1;
    11         }
    12     });
    13     console.log(n,name);

     

     
    正则的特征: 
    懒惰: 比如让找一个数字,它只会找一次,绝对不会找多次 
    贪婪: 有多少找多少(尽可能的去检索)

     

  • 相关阅读:
    MVC中单用户登录
    用CheckBox做删除时请不要使用@Html.CheckBoxFor
    MVC3"不允许启动新事务,因为有其他线程正在该会话中运行"错误解决方法
    下拉菜单DropDwon实现方法
    MVC3中Ajax.ActionLink用法
    删除时显示确认对话框
    民航指令学习(一)
    CentOS常用命令
    CentOS手动分区步骤
    CentOS下安装JDK和Tomcat
  • 原文地址:https://www.cnblogs.com/MrZhujl/p/9925278.html
Copyright © 2020-2023  润新知