长度有限的字母和数字的正则表达式


Regex in letters and numbers with limited length

如何使正则表达式强制:

  • 字母和数字(每种至少1个)
  • 最小和最大长度(10到50)
  • 只有字母或数字

当使用PHP preg_match?


这是我得到的:

 ^[A-Za-z0-9]{10,50}$

它似乎做了所有的事情,除了强制字母和数字。

Do:

^(?=.*(?:[A-Za-z].*'d|'d.*[A-Za-z]))[A-Za-z0-9]{10,50}$
  • (?=.*(?:[A-Za-z].*'d|'d.*[A-Za-z]))为零宽度正向前看,这确保至少有一个字母和一个数字存在

  • [A-Za-z0-9]{10,50}确保匹配只包含字母和数字

演示

或者更简洁,使用两个前视而不是Or -ing(感谢chris85):

^(?=.*[A-Za-z])(?=.*'d)[A-Za-z0-9]{10,50}$