这个PHP正则表达式是什么意思?

时间:2012-08-06 19:45:18

标签: php regex ereg

我正在学习PHP正则表达式,而且我遇到了一些我无法理解的问题。

本书以验证电子邮件地址为例。

if (ereg("^[^@]+@([a-z0-9\-]+\.)+[a-z]{2,4}$", $email))

我不清楚这个表达的几个元素。

  1. 这意味着什么[^@]+@
  2. ([a-z0-9\-]+\.)中括号的用途是什么?

1 个答案:

答案 0 :(得分:6)

[^@]+@表示:

[   - Match this group of characters
 ^@ - Anything that is NOT an at sign
]
+   - One or more times
@   - Match an at sign

因此,它基本上匹配第一个符号前的每个字符。

([a-z0-9-]+.)中括号的目的是创建一个capturing group,稍后您应该能够在该组捕获一定数量的文本后引用它。

另请注意,ereg_*函数已弃用,您的图书必须有点过时。如今,我们使用preg_*系列函数。有关转换它们的教程可以在this SO question中找到。