正则表达式真特么强大,很多场合应用起来真叫一个爽啊
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=/(?=(?!)(w{3})+$)/g; // (?=)表示前向声明,(?!)表示反前向声明, w表示一个字符,表示开头或结尾或空格。
//这里结合了前向声明和反前向声明
str=str.replace(reg,',');
alert(str);
}
test(str);
</script>