问题一
JavaScript 写一个字符串转成驼峰的方法,o_div_style_position转成oDivStylePosotion。
var str = 'border-bottom-color';
var strRg = str.replace(/\-[a-z]/g, function (params) {
return params.charAt(1).toUpperCase();
})
console.log(strRg);
- charAt(1)也可以用substr(1)、substring(1)来替代。
- toUpperCase()转换成大写字母。
- /-[a-z]/g中g表示全文检索,part表示匹配到的字符
- replace是字符串的方法,返回经过修改的新字符串。
问题二
JavaScript 查找字符串中出现最多字符的个数
例如:sdjksfssscfssdd ->字符最多的是s,出现了7次
var str = 'sdjksfssscfssdd';
var maxObj = {
key: null,
count: null
};
var maxCou = 0;
while (str) {
var i = 0;
var reg = new RegExp(str[0], 'g');
var currStr = str[0];
str = str.replace(reg, function (part) {
i++;
return '';
})
if (i > maxCou) {
maxObj.key = currStr;
maxCou = maxObj.count = i;
}
}
console.log(maxObj.key + ':' + maxObj.count)
问题三
JavaScript 把12233435566690中连续重复的数字去掉
判断是否为空字符串,是就直接返回;
不是的话
初始字符串为str第一个,从第二个开始,如果不等于他们前一个的字符,代表不重复,加入初始字符,迭代进行,直到最后一个,返回
function removeRepetition (str) {
if (str != '') {
var result = str[0];
for (var i = 1; i < str.length; i++) {
if (str[i] != str[i - 1]) {
result += str[i];
}
}
}
else result = '';
return result;
}
console.log(removeRepetition("sssssssssaaaaaaaaasasas")); //sasasas
问题四
JavaScript 用js实现千位分隔符?
例如123456789–>123,456,789
var str = '123456789';
var reg = /^([1-9]\d{0,2})((?:\d{3})+)$/;
var s = str.replace(reg, function () {
return RegExp.$1 + ',' + RegExp.$2.match(/\d{3}/g);
})
console.log(s);//123,456,789
知识点
- 将第一个逗号前面的数字作为第一组,后面所有数字为第二组,第二组是由多个三位的数字组合而成的,整体需要匹配捕获,但是每个三位数不需要匹配捕获所以加?:。
- RegExp.$1获取第一个分组,RegExp.$2获取第二个分组。
- match返回匹配到的数据,是数组类型。
注意:IE10中直接调用分组不识别,需要在此前调用test方法:
var str = '123456789';
var reg = /^([1-9]\d{0,2})((?:\d{3})+)$/;
if (reg.test(str)) {
var s = str.replace(reg, function () {
return RegExp.$1 + ',' + RegExp.$2.match(/\d{3}/g);
})
}
console.log(s);//123,456,789
问题五
JavaScript 写一个正则表达式判断字符串是否是对称数
var str = 'Woow';
var reg = /^([a-z])([a-z])\2\1$/i;
if (reg.test(str)) {
console.log('ok')
}
问题六
JavaScript 写出一个正则表达式用于匹配由数字和字母组成的字符串
function checkPassWord (nubmer) {
var re = /^[0-9a-zA-Z]*$/; //判断字符串是否为数字和字母组合
if (!re.test(nubmer)) {
return false;
} else {
return true;
}
}
愿你的坚持终有收获。