正则表达式包含未指定顺序的字符的字符串

时间:2012-11-06 19:43:51

标签: regex string permutation

有字符串时

helloworld
worldhello
ollehdlrow

是否有可以匹配所有这些案例的正则表达式?所以,基本上是一种模式,匹配包含所有字符的所有字符串,未指定顺序

我尝试使用

/[helloworld]{10}/

但由于显而易见的原因,这不起作用,因为它也会匹配eeeeeeeeee

1 个答案:

答案 0 :(得分:1)

你绝对不想为此使用正则表达式。

为了检查字符串中是否存在字符,在您的情况下,您必须使用正向前瞻。它看起来像(?=a),用于检查字符a。没关系。如果我们要检查包含字符ab的字符串,我们可以/^(?=.*a)(?=.*b)/。如果我们想检查多个a,则会出现问题。

查看此示例:http://regex101.com/r/iV2jC8

正如你所看到的那样,正则表达式已经“告诉”了两次字母“a”。但是,第一种情况仍然匹配。这是因为引擎没有保存最初找到第一个'a'的位置,因此下一个断言找到了相同的a。在所有三个例子中都是这种情况。所以实际上,它们都没有真正得到验证。

您必须执行以下操作:http://regex101.com/r/cR8eR4

你可能想象的那样,很快就会失去更大的模式。

我希望这有帮助,祝你好运。