Jos*_*sey 3 javascript regex string algorithm
这里的重点是确切的单词。这需要适用于任意数量的排列,因此希望我的例子很清楚。
给定一串随机字母,是否可以(使用RegEx)匹配给定字符串内的确切字母数量?
因此,如果我有一个str1包含字母的字符串(),ABZBABJDCDAZ并且想匹配字母JDBBAA(str2),则我的函数应该返回,true因为str1包含所有正确的字母足够多的时间了。然而,如果str1将被改变ABAJDCDA,那么该函数将返回false因为str2需要str1有至少2个字母的实例B。
这是我到目前为止使用的范围:
const findLetters = (str1, str2) => {
const regex = new RegExp(`[${str2}]`, 'g')
const result = (str1.match(regex))
console.log(result)
}
findLetters('ABZBABJDCDAZ', 'JDBBAA')Run Code Online (Sandbox Code Playgroud)
如您所见,它匹配正确的字母,但是匹配它们的所有实例。有什么方法可以使用RegEx做我想做的事情吗?我之所以在此关注RegEx的原因是,我需要高度优化此代码,到目前为止,我的其他函数都使用Array.every()和indexOf()太慢了。
注意:我的函数只需要返回一个true/false值。
试试(这里我们对两个字符串的字母进行排序,然后创建regexp之类的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') );Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |