正则表达式,用于匹配字符串中任何位置的所有字符



我需要一个正则表达式来匹配字符串中的所有字符。

EG -输入数组- [a, b, c]下面的单词应该匹配

abc
axbxc
cybxbxca

但不应匹配以下内容。因为这些单词没有所有的输入字符。

axbxyz
bxba

您需要一个像^(?=.*a)(?=.*b)...这样的regexp,您可以从输入动态构建它:

const inputArray = ['a', 'b', 'c'];
let re = RegExp('^' + inputArray.map(x => '(?=.*' + x + ')').join(''))
const words = [
'abc',
'axbxc',
'cybxbxca',
'axbxyz',
'bxba',
];
console.log(words.map(w => [w, re.test(w)]))

如果输入可以包含regex特殊符号,不要忘记正确转义。

您可以使用Array.prototype.every()String.prototype.includes()来过滤匹配的单词:

const inputArray = ['a', 'b', 'c'];
const words = [
// PASS:
'abc',
'axbxc',
'cybxbxca',
// FAIL:
'axbxyz',
'bxba',
];
const result = words.filter(word => inputArray.every(str => word.includes(str)));
console.log(result); // ["abc", "axbxc", "cybxbxca"]

最新更新