正则的几个应用(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>