正则表达式匹配中的固定字符数

pog*_*ogo 3 regex regex-negation regex-lookarounds

有没有办法通过正则表达式匹配固定长度字符串中固定数量的字符?

例如,我想匹配字符串长度为 5 并且正好有 3 个字母和 2 个感叹号 (!) 的所有字符串。感叹号可以位于字符串中的任何位置。

匹配示例:abc!!、a!b!c、!!abc、a!!bc

我尝试使用前瞻进行匹配,但无法限制长度。以下是我使用的正则表达式。

(?=\w*!\w*!\w*)[\w!]{5}
Run Code Online (Sandbox Code Playgroud)

这匹配 a!!!b 和 a!!!! 以及我不想要的。

hwn*_*wnd 5

您可以使用基于前瞻的正则表达式来完成此操作。

^(?=(?:\w*!){2}\w*$)[\w!]{5}$
Run Code Online (Sandbox Code Playgroud)

现场演示