需要正则表达式来验证具有以下规则的字符串:

时间:2014-07-02 18:04:21

标签: regex

需要正则表达式来验证具有以下规则的字符串:

  1. 仅包含字符a-z,A-Z,0-9,@,#和$。
  2. 字符串中的第一个字符必须是字母字符,@,#或$。 (即不是数字)
  3. 不能是数字或字母序列SYS,PGM或APL。
  4. 最少3个字符,最多8个字符。
  5. 我想我已经满足了前三个:

    ^(((?!SYS|PGM|APL)^[a-zA-Z])[a-zA-Z0-9@#$]{3,9})+$
    

    但是,我无法使第4条规则(长度)工作。我对此很陌生,所以非常感谢任何帮助。

    匹配:abc,abc123,abcdef,a1234567,#123ST,A098 $,@ home#1

    不匹配:12345,1abcdef,PGM,APL,APL001,PGMabcd,SYS012

2 个答案:

答案 0 :(得分:0)

首先,您将@#$省略为第一个字母。 其次,您允许使用4到10个字符的字符串(第一个加上3到9个字符)。 第三,你将所有内容包装在()+中,这意味着所附的一个或多个。 试试这个:

^((?!DBM|IBM|SYS)^[a-zA-Z@#$])[a-zA-Z0-9@#$]{2,7}$

我认为这也应该有效:

(?!DBM|IBM|SYS)^[a-zA-Z@#$][a-zA-Z0-9@#$]{2,7}$

答案 1 :(得分:0)

使用此:

^(?!.*(?:SYS|PGM|APL))[a-zA-Z@#$][a-zA-Z0-9@#$]{2,7}$

the demo中,查看匹配和不匹配。

<强>参考