第一个字符的正则表达式不能是特殊字符,并且同一字符不能连续8次或更多次

时间:2019-02-06 11:30:02

标签: regex perl

我想定义一个满足以下条件的perl正则表达式

  1. 最小长度为8,最大长度为24。-(^ [\ w!#+,-。/:= @] {8,24} $)
  2. 同一字符不能连续出现8次以上-([\ w!#+,-。/:= @])\ 1 {7}

  3. 第一个字符不能特殊-^ [^ a-zA-Z0-9] +

  4. 允许使用字符-\ w!#+,-。/:= @

我能够单独实现这一点,但是如何结合所有这三个正则表达式。

先谢谢了。

1 个答案:

答案 0 :(得分:3)

尝试此正则表达式:

^(?!.*(.)\1{7})[A-Za-z0-9][\w!#+,./:=@-]{7,23}$

这里是一个解释:

^                          from the start of the string
    (?!.*(.)\1{7})         assert that the same character does not occur 8 or more
                           times in a row
    [A-Za-z0-9]            match an inital non special character
    [\w!#+,./:=@-]{7,23}$  then match 7 to 23 of any character
$                          end of input

Demo