当有像这样的字符串时
helloworld
worldhello
ollehdlrow
是否有可以匹配所有这些情况的正则表达式?所以,基本上一个模式将匹配所有包含所有字符的字符串,以未指定的顺序。
我尝试使用
/[helloworld]{10}/
但这由于明显的原因不起作用,因为它也会匹配eeeeeeeeee
.
当有像这样的字符串时
helloworld
worldhello
ollehdlrow
是否有可以匹配所有这些情况的正则表达式?所以,基本上一个模式将匹配所有包含所有字符的字符串,以未指定的顺序。
我尝试使用
/[helloworld]{10}/
但这由于明显的原因不起作用,因为它也会匹配eeeeeeeeee
.
您绝对不想为此使用正则表达式。
为了检查字符串中是否存在字符,在您的情况下,您必须使用积极的前瞻。(?=a)
检查字符看起来像这样a
。没关系。如果我们想检查包含该字符的字符串a
,b
我们可以做/^(?=.*a)(?=.*b)/
. 如果我们要检查多个a
s,就会出现问题。
查看此示例:http ://regex101.com/r/iV2jC8
如您所见,正则表达式已被“告知”两次查找字母“a”。但是,第一种情况仍然匹配。这是因为引擎没有保存它最初找到第一个'a'的位置,因此下一个断言找到了相同的a。在所有三个示例中都是这种情况。所以实际上,它们都没有真正得到验证。
你必须做这样的事情:http ://regex101.com/r/cR8eR4
正如您可能想象的那样,较大的模式会很快失控。
我希望这会有所帮助,祝你好运。