如何使用 Regex 检查字符串是否包含给定的字符集(不考虑顺序)?

How can I check if a string contains a given set of characters (disregarding order) using Regex?

我正在尝试编写一个正则表达式来检查给定的字符串是否包含一组字符,但是,该字符串必须包含所有字符,而不考虑出现的顺序。 例如:

var myString = "howdyhow";
var toMatch = "hyo";

字符串myString包含字符串toMatch的所有字符。 我需要的是类似于正则表达式 [hyo] 的东西,但不是匹配 h OR y OR o 的出现,我需要它来匹配 h AND y AND o 的出现(忽略字符之间的顺序或 'distance' ).

我知道它不是正则表达式,但我个人会使用 Contains

if(value.Contains("h") && value.Contains("y") & value.Contains("o")) {}

您可以从第二个字符串构造一个基于 前瞻 的正则表达式并调用 RegExp.test 方法:

var re = new RegExp( toMatch.split('').map(function(item) { 
              return "(?=.*?" + item + ")"; }).join('') );
//=> re = /(?=.*?h)(?=.*?y)(?=.*?o)/

var matched = re.test(myString);

/(?=.*?h)(?=.*?y)(?=.*?o)/ 中的前瞻将确保第二个字符串的所有字符在第一个字符串中匹配,无论它们的位置如何。