如何使用正则表达式匹配任何字母组合?

Joh*_*res 11 html javascript java regex perl

如何以任意组合和不同长度匹配字母a,b,c,如下所示:

表达式应符合以下情况:

abc
bc
a
b
bca
Run Code Online (Sandbox Code Playgroud)

但不应该匹配这些:

abz
aab
cc
x
Run Code Online (Sandbox Code Playgroud)

Ωme*_*ega 16

使用正则表达式模式

\b(?!(?:.\B)*(.)(?:\B.)*\1)[abc]+\b
Run Code Online (Sandbox Code Playgroud)

您可以使用任何设置和大小的此模式,只需替换[abc]为所需的设置...


示例:

在此输入图像描述

(以上输出来自myregextester)


pha*_*t0m 6

^(?=([^a]*a?[^a]*)$)(?=([^b]*b?[^b]*)$)(?=([^c]*c?[^c]*)$)[abc]{1,3}$
Run Code Online (Sandbox Code Playgroud)

适用前瞻.

它包括三种变体的这种模式: (?=([^a]*a?[^a]*)$)

它说:a从这里(开始)到结束,最多需要一个.

结合前瞻和后引用:

^([abc])((?!\1)([abc])((?!\1)(?!\3)[abc])?)?$
Run Code Online (Sandbox Code Playgroud)