匹配任意顺序的单词的正则表达式

3

在漫长而不成功的搜索后,我开始怀疑我正在寻找的是否可能存在。我希望有一个正则表达式要求每个选择的字母都是必需的,但仅出现一次且顺序任意。

例如:^[abc]{3}$

我期望的结果是它只匹配这个:

abc, bac, cba, acb

当我收到:

acc, abb, cca, aab

你明白我在说什么吗?


2
错误的重复,因为 OP 希望在这个问题中每个字母都是必须的。 - anubhava
2个回答

2

这里有另外一种方法。

^(?!.*([abc]).*\1)[abc]{3}$

演示

负向前瞻

(?!.*([abc]).*\1)

断言没有字符被重复使用

[abc]{3}

与这两个锚点一起,它断言字符串的长度为3,并由字符类中的字符组成。


2
您可以使用这样的正则表达式,其中在反向引用中具有匹配字符的负回顾后瞻:
^(?:([abc])(?!.*\1)){3}$

正则表达式演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接