zoukankan      html  css  js  c++  java
  • JS正则小例子(更新中....)

      从四月底到五月初,经历过了大大小小的笔试。回顾当时笔试情况,无一不是跪在js中的正则表达式。亡羊补牢才是真理。

      (1)利用正则表达式计算一列字符串中,出现最多次数的字符以及其出现的个数。

        这个题目也在YY面试中的笔试部分中出现过,当时只是用了最笨的办法,后来想想其实用正则表达式更简单。

        思路就是,有一个很长的字符串,先把字符串变为数组(方便排序),使用sort函数对数组进行排序,然后利用join方法合并数组变为新的字符串。此时新的字符串中字符都是已经排好序。正则表达式  /(w)1+/g  表示:查找相同字符串。原理:w 指的是匹配字符(字符指:数字,字符,下划线);1需要配合()使用,重复子项;整体的意思就是重复括号中的字符串;+表示1个以上;整体效果就可以查找相同的字符串。

        需要注意的是:replace方法中,第一个参数是正则,第二个参数可以是需要代换的新的字符串,也可以是一个回调函数,$0指的是整体字符串,$1只是哪个字符。可以使用console.log查看这两个参数。这样就容易理解这两个参数的含义。

     1     var str1 = "The Mayo Clinic acknowledges that most doctors recommend drinking  6 to 8 glasses of water daily so you body functions perfectly. Drinking this amount of water every day will hydrate your body from the inside out, including a better function of your internal organs(stomach, kidneys, head) as well as making your external one(skin) radiant.";
     2     var arr1 = str1.split('');
     3     str1=arr1.sort().join('');
     4     var re=/(w)1+/g;
     5     var value=0;
     6     var maxnum=0;
     7     str1.replace(re,function($0,$1){
     8       // console.log($0)
     9         if(maxnum<$0.length){
    10             maxnum=$0.length;
    11             value=$1;
    12         }
    13     });
    14     console.log('value:'+value+'  maxnum:'+maxnum);

      (2)利用正则表达式,去掉字符串中的标签。

        正则表达式中, /<[^>]+>/g 表示: g的意思是全局;因为标签的特征是<>具有尖角符号,尖角符号中的元素名称都可看成是字符,包括class类选择器等。从而可以匹配开始标签和闭合标签。

     1 //假设有一段字符串还有标签
     2 var str = "<h1 class="title">美国社会心理学大师奥尔波特说</h1>";
     3 
     4 //设一个正则
     5 var re1=/<[^>]+>/g;
     6 
     7 //声明一个变量newstr来放置改变后的字符串
     8 var newstr=str.replace(re1,"");
     9 //后台输出
    10 console.log('str1'+str1);

      (3)利用正则表达式,去除敏感字眼。

        CVTE中面试官有个问就是:在论坛中,如果有评论是比较敏感的词语,该如何去除?

        利用正则表达式能够匹配到关键敏感词,如果需要使用*之类的字符屏蔽掉,可以用回调函数,replace中回调函数第一个参数就是能够匹配字符串,利用字符串长度,就可以计算出多少个*,然后返回代替元匹配字眼。

        需要注意的是,正则表达式中,“|”表“或者”,下面的正则可以匹配多个敏感字眼。

     1     var str = "美国社会心理学大师奥尔波特说,心理学领域写就的著作中,最有影响者,非勒庞的《乌合之众》莫属。";
     2 
     3     //设置正则表达式
     4     var re = /乌合之众|心理|勒庞/g;
     5 
     6     //可以使用回调函数把关键字用*号代替
     7     var str2 = str.replace(re, function (mystring) {
     8         var result="";
     9         for(var i=0; i<mystring.length;i++){
    10             result+="*";
    11         }
    12         return result;
    13     });
    14 
    15     console.log('str2'+str2);

        

  • 相关阅读:
    一千亿亿亿字节
    分布式发布订阅消息系统
    Google Chrome 的内核引擎 WebKit 介绍
    找项目网站C# 下写入视频的简单实现
    学ios开发:Delegate,Action Sheet, Alert
    Web服务器
    Google Chrome Source Code 源码下载
    大数据处理的趋势五种开源技术介绍
    MDA项目思路小结
    重新发布本人所有博客文章中涉及的代码与工具(大部分是C++和Java)
  • 原文地址:https://www.cnblogs.com/synchronize/p/6843706.html
Copyright © 2011-2022 走看看