我正在寻找一个正则表达式(使用JavaScript)来匹配包含给定单词中所有或部分字母子集的所有3-6个字母单词。例如,如果我说的是“救援”,那么我应该匹配“使用”、“治愈”、“重用”、“安全”等等。我现在拥有的是:
\b(?!\w*(\w)\w*\1)[rescue]{3,6}\b...And这是有效的,但对重复的字母。它与2 E的单词不匹配:

r、e、s、c、u、e最多应该匹配1 r、s、c和u,最多匹配2e的。
我被卡住了。我不擅长这些事情,这也是一个奇迹,我已经走了这么远。这不是我需要快速或频繁地执行的操作,并且单词列表仅为2万字左右。我不关心最有效的解决方案。我希望能得到一些帮助。谢谢。
发布于 2022-03-08 07:37:00
您不需要消极的展望,因为它目前是如何编写的,这部分(?!\w*(\w)\w*\1)断言,右边的不是一个可以在\w*\1中再次出现的单词char (\w)
相反,您可以先断言长度,然后匹配一个字符r e s c u e。
\b(?!\w*([rescue])\1)(?=\w{3,6}\b)\w*[rescue]\w*\b看一个regex 101演示。
如果单词只能由列出的字符组成:
\b(?!\w*([rescue])\1)[rescue]{3,6}\b看另一个regex 101演示。
https://stackoverflow.com/questions/71389465
复制相似问题