在 PHP 中使用 preg_match 时,“未知修饰符‘ g’在... ...”?

下面是我正试图使用的 regex:

/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim

我在 这个网站上找到的,我在外面试的时候效果很好。但是一旦我把它放进我的代码中,我就会得到这样的信息:

Warning: preg_match() [function.preg-match]: Unknown modifier 'g' in C:\xampp\htdocs\swebook\includes\classes.php on line 22

有人能解释一下出了什么问题吗? 为什么它在那个网站上工作,而不是在我的代码里?

82014 次浏览

preg_match没有修饰符 g。相反,您必须使用 preg_match_all函数。

所以不是:

preg_match("/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/gim", ....)

用途:

preg_match_all("/^(\w|\.|-)+?@(\w|-)+?\.\w{2,4}($|\.\w{2,4})$/im", ....)