正则表达式确保只有四个字母出现一次

时间:2019-02-09 07:23:59

标签: regex

我需要一个正则表达式以仅允许以下字母:“ uldr”,每个字母只能出现一次。它们出现的顺序无关紧要,只允许那些字母被允许并且它们不能重复。例如

有效:

肩膀

u

ld

rdu

无效:

uldrr

uu

ll

dd

drdd

到目前为止,这是我所拥有的:[uldr]{1,4},但这允许字符重复。

1 个答案:

答案 0 :(得分:1)

您的正则表达式[uldr]{1,4}仅限制您允许的字符和长度限制。除此之外,您还可以使用否定前瞻来拒绝匹配,其中使用此否定前瞻(?!.*(.).*\1)以及任何可以使用的修改后的正则表达式来拒绝字符重复自身的匹配,

^(?!.*(.).*\1)[uldr]{1,4}$

Demo1

一个更优化的正则表达式将是这样,但是可读性稍差。

^(?![uldr]*([uldr])[uldr]*\1)[uldr]{1,4}$

Demo2