我目前正在研究密码强度计算器,然后我需要知道一个角色是否出现不止一次.
我知道我必须regex
像这样使用occurance = password.match(/a/g).length
很多次a
,但我想用每个字符(字母,数字,符号)来做.
有没有办法使用JS/JQuery,也许是正则表达式,除了使用包含我想要测试的所有字符的数组?
像这样的东西?
var hello = "Hello world";
var histogram = {};
for (var i = 0, len = hello.length; i < len; i++) {
var letter = hello[i];
histogram[letter] = (histogram[letter] || 0) + 1;
}
console.log(histogram);
Run Code Online (Sandbox Code Playgroud)
结果:
{ H: 1, e: 1, l: 3, o: 2, ' ': 1, w: 1, r: 1, d: 1 }
Run Code Online (Sandbox Code Playgroud)
或者你可以使用数组.只需{}
改为[]
.
从@Noel何塞的答案在这里,你可以简单地将字符串转换为数组后运行该功能string.split('')
.
function foo(arr) {
var a = [], b = [], prev;
arr.sort();
for( var i = 0; i < arr.length; i++ ){
if ( arr[i] !== prev ) {
a.push(arr[i]);
b.push(1);
} else {
b[b.length-1]++;
}
prev = arr[i];
}
return [a, b];
}
var stringToCheck = 'password';
var result = foo(stringToCheck.split(''));
// result[0] contain unique array elements and result[1] contain number of occurrences of those elements
for(var i = 0; i < result[0].length; i++){
console.log(result[0][i] + " : " + result[1][i]);
}
Run Code Online (Sandbox Code Playgroud)
传入'测试'将导致以下输出:
e : 1
g : 1
i : 1
n : 1
s : 1
t : 2
Run Code Online (Sandbox Code Playgroud)