簡體   English   中英

javascript檢查字符串是否具有一組字符

[英]javascript check if string has one of set of chars

我正在實施密碼復雜性檢查,其中一項要求是密碼至少包含一組字符中的一個。

我將如何為此編寫高效的函數,即

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

謝謝!

代替使用上述功能,嘗試將其與正則表達式模式一起使用。

  • 至少包含8個字符
  • 至少包含1個數字
  • 包含至少1個小寫字符(az)
  • 包含至少1個大寫字符(AZ)
  • 僅包含0-9a-zA-Z

如果要使用以下模式的字符集,而且{4,}至少包含字符,則可以根據需要進行更改

[a-zA-Z0-9]{4,}

謝謝。

根據要求接收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")); 

您可以對兩個字符串進行排序,然后執行以下操作:

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

(功勞歸於SomePerformance)

 // 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')); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM