使用RegEx精确查找随机字符串中的字母

问题描述 投票:2回答:1

这里的重点是精确地。这需要适用于任意数量的排列,因此希望我的示例足够清楚。

给出一串随机字母,是否可以(使用RegEx)匹配给定字符串内的确切字母数?

因此,如果我有一个包含字母str1的字符串(ABZBABJDCDAZ),并且想匹配字母JDBBAAstr2),则我的函数应该返回true,因为str1包含所有正确的字母足够次。但是,如果将str1更改为ABAJDCDA,则该函数将返回false,因为str2要求str1至少具有字母B2个实例。

这是我到目前为止使用的范围:

const findLetters = (str1, str2) => {
  const regex = new RegExp(`[${str2}]`, 'g')
  const result = (str1.match(regex))
  console.log(result)
}

findLetters('ABZBABJDCDAZ', 'JDBBAA')

您可以看到它与正确的字母匹配,但与它们的all实例匹配。有什么方法可以使用RegEx做我想做的事情吗?我之所以在此关注RegEx的原因是,我需要高度优化此代码,到目前为止,我使用Array.every()indexOf()的其他函数太慢了。

注意:我的函数仅需要返回true/false值。

javascript regex string algorithm
1个回答
2
投票

尝试(这里我们对两个字符串的字母进行排序,然后创建像A.*A.*B.*B.*D.*J这样的正则表达式)

const findLetters = (str1, str2) => {
  const regex = new RegExp([...str2].sort().join`.*`)
  return regex.test([...str1].sort().join``)
}

console.log( findLetters('ABZBABJDCDAZ', 'JDBBAA') );
console.log( findLetters('ABAJDCDA', 'JDBBAA') );
© www.soinside.com 2019 - 2024. All rights reserved.