查找字符串中存在的所有给定字符。字符可以出现在字符串的任何位置

我试图找出字符串中是否存在给定的字符。


对于下面的示例,它返回 true。但它应该是错误的,因为在 'abcdef' 中只有一个 'a'。


我的要求:


确认所有给定的字符都存在于字符串中。

字符可以在字符串中的任何位置。不需要它们应该在相同的顺序。但计数很重要。在下面的示例中,我给出了“aca”,它包含两个“a”,但正则表达式中的值在“abcdef”中仅包含一个“a”。

如何检查字符串中是否存在所有给定字符?


var regEx = new RegExp("^[abcdef]+$");

regEx.test('aca') // returns true. **Expected**: false for this case


UYOU
浏览 116回答 2
2回答

浮云间

您可以先找到每个字符的计数,然后使用every()方法检查是否所有字符都存在。function findAll(str, key) {  let count = str.split('').reduce((count, c) => {    count[c] = count[c] + 1 || 1;    return count;  }, {});  return key.split('').every(c => {    if (count[c]) {      count[c]--;      return true;    }  });}console.log(findAll("abcdef", "abc"));console.log(findAll("abcdef", "abca"));console.log(findAll("abcdef", "xyz")); 

森林海

正则表达式匹配和对象的小技巧Set:var chars = 'abcdef'function match_all(str, char_str){    var pat = RegExp('['+ char_str +']', 'g'),    matched_chars = [...new Set(str.match(pat))];    matched_chars.sort()    console.log(matched_chars.join('') == char_str)}  match_all('aca', chars)match_all('acbacadaef1a2a3', chars)match_all('ccbacad1e2d', chars)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript