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

标签 php regex preg-match

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

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

当使用 php preg_match 时?


这是我得到的:

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

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

最佳答案

做:

^(?=.*(?:[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}$

关于php - php 中的正则表达式-长度有限的字母和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40099274/

相关文章:

C++ 正则表达式

php - 用于拆分所有未转义分号的正则表达式

c++ - 使用 Boost 的 regex_match 编译 C++ 代码

php - 使用 PHP 从(搜索引擎)引用网址获取关键字

php - 在 PHP 中做什么

php - 如何正确显示此表?

javascript - Textarea 不会从数据库渲染换行符

php - 调用未定义函数 session_start()

php - PCRE:使用 PHP 捕获可选模式

php - preg_match 返回通知 : Undefined offset