正则表达式以逗号分隔的字符

时间:2015-02-18 18:03:32

标签: regex

我正在寻找一个正则表达式来验证由逗号分隔的一组非重复字符。

给出像ABCD这样的字符集 匹配任何逗号分隔的排列(无重复字符)
有些比赛是:
一个
ç
C,B
B,d
d,B,A,C
有些没有比赛是:
A,A
ABC
D,B,A,B

这可行,但不允许使用逗号:

\b(?!(?:.\B)*(.)(?:\B.)*\1)[ABCD]+\b

2 个答案:

答案 0 :(得分:3)

尝试这样的事情符合您的需求:

^(?:([A-D])(?!.*?\1),)*[A-D]$

如果只有一个[A-D],前面的那些必须后面跟一个逗号,请先捕获[A-D]\1并检查是否自己后跟一个{{1}}使用了否定lookahead

test at regex101.com; Regex FAQ

答案 1 :(得分:1)

^(?!.*?([A-D]).*?\1)[A-D](?:,[A-D])*$

试试这个。看看演示。

https://regex101.com/r/uC8uO6/8