0

我是正则表达式的新手。我正在寻找只能包含前缀为 + 或 – 符号的字符“SALT”的字符串。

我正在使用[(SALT){1}\+-]{8}部分工作。不完全的。

总字数 8

可接受的值

+S+A+L+T

+S-A-L+T

+T+L+A+S

以下是不可接受的值。

除了 +,- 仅作为前缀之外,没有重复的字符。

IE

S+L+S+S ( Character is repeated in this )
S+++++ 
-------S
S-+S-+S

如果有人在这方面帮助我,我将不胜感激。

谢谢

4

3 回答 3

5

您可以使用前瞻来确保您的所有角色都在那里

^(?=.*S)(?=.*A)(?=.*L)(?=.*T)([+-][SALT]){4}$
于 2013-04-26T20:45:37.980 回答
0

一个有趣的方式(如果 RE 引擎支持条件和反向引用):

^(?:[+-](?:(S(?(1)Z))|(A(?(2)Z))|(L(?(3)Z))|(T(?(4)Z)))){4}$
于 2013-04-26T21:11:13.960 回答
-1

尝试这个:

^(([+\-]([SALT]))(?!\2))+$

它使用否定的前瞻断言来防止匹配重复的断言。

于 2013-04-26T20:44:46.950 回答