javascript检查字符串是否具有一组字符

时间:2018-05-03 04:25:33

标签: javascript

我正在实施密码复杂性检查,其中一个要求是密码至少包含一组字符。

我如何为此编写有效的函数,即

function hasOneOfChars(s, chars) {
  // assuming both s and chars are strings, 
  // return true iff s has at least one char from chars
}

谢谢!

4 个答案:

答案 0 :(得分:2)

而不是使用上述功能尝试使用正则表达式模式。

  • 至少包含8个字符
  • 包含至少1个数字
  • 包含至少1个小写字符(a-z)
  • 包含至少1个大写字符(A-Z)
  • 仅包含0-9a-zA-Z

如果你想要一组字符使用下面的模式,那么{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)

&#13;
&#13;
// 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;
&#13;
&#13;