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

Ibr*_*him 7 php regex preg-match

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

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

什么时候使用php preg_match?


这是我得到的:

 ^[A-Za-z0-9]{10,50}$
Run Code Online (Sandbox Code Playgroud)

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

hee*_*ayl 5

做:

^(?=.*(?:[A-Za-z].*\d|\d.*[A-Za-z]))[A-Za-z0-9]{10,50}$
Run Code Online (Sandbox Code Playgroud)
  • (?=.*(?:[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}$
Run Code Online (Sandbox Code Playgroud)

  • 我在这里添加这个,https://regex101.com/r/TTeWKd/1,可以使用2个预览,不需要`或`和重复的字符检查. (2认同)