我正在用头撞墙。我想要一个匹配的正则表达式:空字符串、A
、AB
和 ABC
,但不匹配 AC
。我有这个,它有效:
/^(A|AB|ABC)?$/
但这只是一种简化;在我的应用程序中,A
、B
和C
实际上是长字符类,所以我不想一遍又一遍地重复它们。也许我只是没有以正确的方式看待它。我试过这个:
/^((AB?)C?)?$/
但这仍然匹配 AC
。
是否有更简单的方法来做到这一点,可以扩展到(例如)ABCD
、ABCDE
等?
编辑:通过扩展到ABCDE
,我的意思是它将匹配:空字符串,A
,AB
,ABC
,ABCD
,ABCDE
。基本上,“以”正则表达式开头。
最佳答案
尝试这个正则表达式:
^(A(B(C)?)?)?$
我认为您可以看到该模式并将其扩展为 ABCD
和 ABCDE
,如下所示:
^(A(B(C(D)?)?)?)?$
^(A(B(C(D(E)?)?)?)?)?$
现在每个部分都依赖于前面的部分(B 依赖于 A,C 依赖于 B,等等)。
关于javascript - 正则表达式匹配 A、AB、ABC,但不匹配 AC。 ("starts with"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55758466/