4

这是我的正则表达式

^(([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 框架正则表达式验证器一起使用它...

4

2 回答 2

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.或。_其余的匹配字符串。

于 2012-05-17T21:19:37.333 回答
2

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

于 2012-05-17T21:24:59.263 回答