正则的几个应用(js)

 正则表达式真特么强大,很多场合应用起来真叫一个爽啊

 

  1 。连接型字符串转驼峰字符串

           

<script>
   
      var  str='style-border-color-background';
      
      function  test(str){
           var  reg=/-(\w)/g;                                //()引起来,作为正则的子项,接下来会用到
          str = str.replace(reg, function( $ , $0 ){         //$代表正则,$0代表正则的子项 [ 此处为 (\w)]
                  return   $0.toUpperCase();
          });
          alert(str);
     }

     test(str);

</script>

  2。json字符串去掉空值项

        最近遇到一个问题,前端ajax(或用 easyui )向后台 struts2 提交表单报错:could not find action or result struts ,有网友说是json字符串空值造成的(后来证明不是,是表单中的id造成的,尽管id没有重复,重新给id取名就好了,而且可以明确的是就是日期控件【easui 的日期控件】id造成的)。

        作为解决上述问题的一个尝试( 尽管失败了),记录下来这种正则表达式的写法。

        一般参数 json字符串是形如:a=1&b=2&c=&d= 的情况,开始处理吧

                  

1  var param=$('#myForm').serialize();       //对表单序列化
2  var regExp=/(\w+)_(\w+)+(=&)/g           // like :  abc_def_ghi=&
3  var regExp2=/(?=((\w+)_(\w+)+=))&/    // end as: abc_def_ghi=
4  param=param.replace(regExp,'');
5  param=param.replace(regExp2,'');

       

  3 。查找字符串中出现最多的字符和个数

        

<script>
       var  str='sqlsllabcstboostfucks';
       function test(str){
              var arr = str.split('');   
              arr.sort();                        //排序,使相同的字符紧挨在一起
              str =  arr.join('');

              var reg = /(\w)\1+/g;       //  \1表示与前面的重复的匹配 ,+ 表示可以多次出现
              var value='';                     //记录字符
              var num=0;                      //记录出现次数
             
              str.replace(reg , function ( $ ,$0 ){
                      if($.length>num){
                               num=$.length;
                               value=$0;
                      }
              });

return '出现最多的字符是'+value+',出现的次数是'+num;
}
        alert(test(str)); 

</script>

 

  4。字符串加千分符

<script>
      var  str='35712456';
      function test(str){
               var reg=/(?=(?!\b)(\w{3})+$)/g;       // (?=)表示前向声明,(?!)表示反前向声明, \w表示一个字符,\b表示开头或结尾或空格。
//这里结合了前向声明和反前向声明
str=str.replace(reg,','); alert(str); } test(str); </script>

 

posted @ 2017-06-18 14:41  conserdao  阅读(209)  评论(0编辑  收藏  举报