标签: regex
我需要一个正则表达式以仅允许以下字母:“ uldr”,每个字母只能出现一次。它们出现的顺序无关紧要,只允许那些字母被允许并且它们不能重复。例如
有效:
肩膀
u
ld
rdu
无效:
uldrr
uu
ll
dd
drdd
到目前为止,这是我所拥有的:[uldr]{1,4},但这允许字符重复。
[uldr]{1,4}
答案 0 :(得分:1)
您的正则表达式[uldr]{1,4}仅限制您允许的字符和长度限制。除此之外,您还可以使用否定前瞻来拒绝匹配,其中使用此否定前瞻(?!.*(.).*\1)以及任何可以使用的修改后的正则表达式来拒绝字符重复自身的匹配,
(?!.*(.).*\1)
^(?!.*(.).*\1)[uldr]{1,4}$
Demo1
一个更优化的正则表达式将是这样,但是可读性稍差。
^(?![uldr]*([uldr])[uldr]*\1)[uldr]{1,4}$
Demo2