我需要一个可以根据以下条件验证字符串的正则表达式。
因为我对regexp知之甚少,所以到目前为止我所尝试的例子都是非常不可接受的,而且我觉得,这些都没有必要在这里呈现。
答案 0 :(得分:3)
这是我的正则表达式。
(?!.*__.*)(?!.*_$)(ROLE_[A-Z_]{1,15})
以下是它的作用:
ROLE_
,然后匹配任何其他字符A-Z和下划线,至少一次但不超过15次。这样可以使整个字符串长度保持在20或更小。答案 1 :(得分:3)
IMO,使用正则表达式检查字符串的长度会使其变得复杂,但您可以使用以下内容:
^ROLE_(([A-Z]+_)*[A-Z]+)(?<!.{21})$
(?<!.{21})
基本上拒绝字符串,如果它的长度超过20
Here是Rubular的演示。
如果你的正则表达式不支持负面的外观,你可以使用
^(?!.{21,})ROLE_(([A-Z]+_)*[A-Z]+)$
(?!.{21,})
与(?<!.{21})
的作用相同,但会先检查长度。
Here是Rubular的演示。
答案 2 :(得分:-1)
这应该可以解决问题:
ROLE(_[A-Z]+)+
这不会限制最大长度,但我认为这是你最接近的。