我正在实施密码复杂性检查,其中一个要求是密码至少包含一组字符中的一个。
我将如何为此编写一个有效的函数,即
function hasOneOfChars(s, chars) {
// assuming both s and chars are strings,
// return true iff s has at least one char from chars
}
谢谢!
我正在实施密码复杂性检查,其中一个要求是密码至少包含一组字符中的一个。
我将如何为此编写一个有效的函数,即
function hasOneOfChars(s, chars) {
// assuming both s and chars are strings,
// return true iff s has at least one char from chars
}
谢谢!
而不是使用上述函数尝试将其与正则表达式模式一起使用。
如果您想要一组字符使用以下模式,此外 {4,} 至少包含字符,因此您可以根据您的要求进行更改
[a-zA-Z0-9]{4,}
谢谢。
您可以对两个字符串进行排序并执行以下操作:
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
按要求接收 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"));
(功劳归于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'));