我正在实施密码复杂性检查,其中一个要求是密码至少包含一组字符。
我如何为此编写有效的函数,即
function hasOneOfChars(s, chars) {
// assuming both s and chars are strings,
// return true iff s has at least one char from chars
}
谢谢!
答案 0 :(得分:2)
而不是使用上述功能尝试使用正则表达式模式。
如果你想要一组字符使用下面的模式,那么{4,}至少包含字符,所以你可以根据你的要求改变
[a-zA-Z0-9]{4,}
感谢。
答案 1 :(得分:1)
要求接收2个字符串参数。您可以尝试以下代码。
function hasOneOfChars(s, chars) {
for (let char of chars.split(""))
if (s.indexOf(char) > -1) {
return true;
}
return false;
}
console.log(hasOneOfChars("abcd", "abcasjkdf"));
答案 2 :(得分:1)
您可以对两个字符串进行排序并执行以下操作:
var s = "ytreza".split("").sort().join("");
var chars = "ytrewq".split("").sort().join("");
hasOneOfChars(s, chars); // true
function hasOneOfChars (s, chars) {
var a, b, i, n;
if (s < chars) a = s, b = chars;
else a = chars, b = s;
i = 0, n = a.length;
while (i < n && a[i] !== b[0]) i++;
return i < n;
}
使用已排序的字符串,您不必再遍历两个字符串:
a = "azerty"
b = "qwerty"
n = a.length // 6
i = 0, a[i] === b[0] ? false
i = 1, a[i] === b[0] ? false
i = 2, a[i] === b[0] ? true
return i < n // true
答案 3 :(得分:1)
(归功于CertainPerformance)
// assuming both s and chars are strings, return true iff s has at least one char from chars
function hasOneOfChars(s, chars) {
return [...chars].some(char => s.includes(char));
}
console.log(hasOneOfChars('aaabbb', 'ax'));
console.log(hasOneOfChars('aaabbb', 'xy'));
&#13;