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);

    

原文地址:https://www.cnblogs.com/synchronize/p/6843706.html