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

时间:2016-10-18 04:00:38

标签: php regex preg-match

如何制作强制执行的正则表达式:

  • 字母和数字(每个至少1个)
  • 最小和最大长度(10到50)
  • 除了字母或数字之外别无其他

使用php preg_match?

这是我得到的:

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

除了强制执行字母和数字之外,它似乎做了所有事情。

1 个答案:

答案 0 :(得分:5)

执行:

^(?=.*(?:[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}确保匹配仅包含字母和数字

Demo

甚至更干净,使用两个前瞻而不是OR-ing(感谢chris85):

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