写一篇红宝石正则表达式

时间:2014-02-19 19:26:06

标签: ruby regex

我如何编写检查此内容的ruby regexp:

不超过4个字符,任何顺序的mpls的任意组合,并且每个字符不得出现多次。所有都必须是小写的。 4个字符是mpls。

有效:mpl 有效:s 有效:lmps

无效:MpLS 无效:mmpls

谢谢

2 个答案:

答案 0 :(得分:2)

如果你不想重复角色,这个正则表达式会为你做。

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

答案 1 :(得分:0)

在这种情况下,编写匹配无效字符串的正则表达式更容易。这个正则表达式比例如Sabuj Hassan的正则表达式更有效。

re = /(.).*\1|[^mpls]/

"mpl" !~ re   # => true
"s" !~ re     # => true
"lmps" !~ re  # => true
"MpLS" !~ re  # => false
"mmpls" !~ re # => false