0

当有像这样的字符串时

helloworld
worldhello
ollehdlrow

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

我尝试使用

/[helloworld]{10}/

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

4

1 回答 1

1

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

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

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

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

你必须做这样的事情:http ://regex101.com/r/cR8eR4

正如您可能想象的那样,较大的模式会很快失控。

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

于 2012-11-06T20:03:22.293 回答