PHP检查特定模式

时间:2019-03-04 11:26:20

标签: php regex

我想检查字符串中的特定模式。我的模式包含3个部分:

  • 开始:第一个字符应该是数字或字母
  • 结尾:最后一个字符应该是数字或字母
  • 中间:字符之间可以是数字,字母或连字符/减号(-)或@的任意组合。

我正在使用以下正则表达式:

  

preg_match('/ ^ [a-zA-Z0-9] + [@ \-] * [a-zA-Z0-9] + $ / i');

并在字符串上进行了测试:

  

a-121kabrastreet @ 90

,其值为false。请纠正我的逻辑。 谢谢

1 个答案:

答案 0 :(得分:1)

字母和数字也应添加到中间的字符类中。请注意,如果连字符位于字符类末尾,则不必转义。

^[a-zA-Z0-9][@a-zA-Z0-9-]*[a-zA-Z0-9]$
              ^^^^^^^^^

使用不区分大小写的标志,您的模式可能类似于:

/^[a-z0-9][@a-z0-9-]*[a-z0-9]$/i

Regex101 demo | Php demo