【问题标题】:What does this PHP regular expression mean? [duplicate]这个 PHP 正则表达式是什么意思? [复制]
【发布时间】:2012-08-03 19:29:59
【问题描述】:

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

本书给出了验证电子邮件地址的示例。

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

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

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

【问题讨论】:

  • 不要使用 ereg,它已经贬值了,我会说你的书已经过时了。不要使用正则表达式来验证电子邮件地址;使用过滤器

标签: php regex ereg


【解决方案1】:

[^@]+@ 表示:

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

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

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

还请注意,ereg_* 函数已被弃用,您的书一定有些过时了。如今,我们使用preg_* 系列函数。转换它们的教程可以在this SO question找到。

【讨论】:

  • 仅供参考,这不是ampersand,而是at sign
  • @Gordon - 哈,你说得对,先生。感谢您指出这一点,我已经解决了。
  • 谢谢,是的,我注意到教程是用 POSIX 语法编写的,这会带来像你说的那样被弃用的错误。我使用的是最新的 PCRE。
猜你喜欢
  • 2016-06-10
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-21
  • 2021-05-20
相关资源
最近更新 更多