Regex 理解正则表达式的本质和本质

Regex 理解正则表达式的本质和本质,regex,Regex,需要一些谈话,通过和解释正则表达式,因为它似乎很明显,但我会写一个,它不会验证,我不明白为什么 我正在使用来测试我的表达式,并尝试(最终)验证密码。但首先,我只想简单地匹配一个由8个或更多字符组成的字符串 根据这一点,我应该拥有我所需要的大部分。这个网页告诉我\w匹配一个单词字符,然后+匹配一个或多个。这与我正在测试的每个表达式都匹配(很好)。现在我只想匹配那些有8个或更多字符的。所以“梅西”不应该验证,而“LOLL”应该验证。然后我写了这个(\w+{8,})表达式,但是没有突出显示任何内容,也

需要一些谈话,通过和解释正则表达式,因为它似乎很明显,但我会写一个,它不会验证,我不明白为什么

我正在使用来测试我的表达式,并尝试(最终)验证密码。但首先,我只想简单地匹配一个由8个或更多字符组成的字符串


根据这一点,我应该拥有我所需要的大部分。这个网页告诉我
\w
匹配一个单词字符,然后
+
匹配一个或多个。这与我正在测试的每个表达式都匹配(很好)。现在我只想匹配那些有8个或更多字符的。所以“梅西”不应该验证,而“LOLL”应该验证。然后我写了这个
(\w+{8,})
表达式,但是没有突出显示任何内容,也就是没有验证任何内容。我使用了
()
括号尝试将所有内容组合在一起,但没有任何区别。有人能看出我的想法哪里出了问题吗?

您必须从正则表达式中删除以下
+
。由于
+
将前一个标记重复一次或多次,因此类似地,
{8,}
将将前一个标记重复8次或多次。因此,您不需要在这个
(\w++{8,})
模式中包含
+

(\w{8,})
如有必要,请使用捕获组或进行匹配

\w{8,}

啊,当然!谢谢你提出另一个简短的问题(如果允许的话,我会接受你的问题)。此表达式\w{8,}\d+将接受以下字符串:willvalidate452,但不接受此willvalidate452das,或者更确切地说,它一直接受到最后2个字符串(不是das部分)。因此,我有两个问题:如何使它不验证任何字符串或所有字符串,而只是验证部分字符串;其次,我如何说表达式允许在任何地方都有一个数字,而不是在/w字符之后,而我认为它正在做的事?
^\w{8,}\d+$
匹配
将验证452
,因为第一个
\w{8,}
匹配整个字符串并回溯到存在于最后一个数字之前的边界,以提供匹配。下一个
\d+
与最后一个或多个数字匹配。但是在这种情况下,
willvalidate452das
\w{8,}
匹配整个字符串并回溯到存在于最后一个数字之前的边界,
\d+
匹配最后一个数字。因为匹配后存在一些字符,这会使整个模式失败。请注意,
\w
也匹配数字。那么如何让willvalidate452das进行验证?