正则表达式一个点或一个下划线验证器

时间:2012-05-17 21:07:53

标签: regex validation zend-validate

这是我的正则表达式

^(([a-z0-9]+)\.([a-z0-9]+)){4,20}$|^(([a-z0-9]+)\_([a-z0-9]+)){4,20}$

它将是一个带有单个点或单个下划线或没有uderline和点的单词。我也希望这个表达式在4到20个字符之间(它将是db中的用户名)

这个正则表达式

^(([a-z0-9]+)\.([a-z0-9]+))$

和这一个

^(([a-z0-9]+)\_([a-z0-9]+))$

成功运作,但我不知道如何限制字符串长度

:(请帮忙

我将使用它与zend框架regex验证器......

2 个答案:

答案 0 :(得分:7)

^(?=[^\._]+[\._]?[^\._]+$)[\w\.]{4,20}$

说明:

^            - Start of string
(?=          - Followed by (not part of match)
  [^\._]+    - Anything but . and _
  [\._]?     - Optional . or _
  $          - End of string
)
[\w\.]{4,20} - 4-20 letters, digits, _ and .
$            - End of string

(?=[^\._]+[\._]?[^\._]+$)确保字符串不超过1 ._。其余的与字符串匹配。

答案 1 :(得分:2)

您应该使用第二个验证器而不是正则表达式验证长度,因为这将提高代码的可读性。使用^[a-z0-9]+[._][a-z0-9]+$作为Regex验证程序的正则表达式,并使用StringLength验证程序检查长度。

相关问题