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

时间:2015-07-06 15:50:58

标签: regex string regex-lookarounds

我正在尝试编写正则表达式以检查给定字符串是否包含一组字符,但是,字符串必须包含所有字符,而忽略外观顺序。 例如:

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可以从第二个字符串和调用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)/中的前瞻将确保第二个字符串的所有字符在第一个字符串中匹配,而不管其位置如何。