这个正则表达式只匹配@az 的第一次出现/\@[a-z0-9]+/i
?preg_match_all()
在 php 中使用它:preg_match_all('/\@[a-z0-9]+/i', $input, $matches)
犯了简单的错误?
@
这匹配后跟任何字符的所有实例:a-z
或A-Z
或0-9
(1 次或多次)。
你也不需要逃离@
这里。
<?php
$text = <<<T
@fooo
@bar1234
@stackoverflow
T;
preg_match_all('/@[a-z0-9]+/i', $text, $matches);
print_r($matches);
?>
输出
Array
(
[0] => Array
(
[0] => @fooo
[1] => @bar1234
[2] => @stackoverflow
)
)
它将匹配一个且仅一个@,然后匹配一个或多个字母/数字(因为+)。
您的正则表达式也与 i 结尾不区分大小写。
所以它将匹配“@a”、“@aaaAAAAzZZeeEErrRttT1234”,但不匹配“@@aaa”。
您的正则表达式与 preg_match_all 结合使用是正确的。如果您不确定,只需编写一个小测试脚本:
<?php
$input = '@a @b';
preg_match_all('/\@[a-z0-9]+/i', $input, $matches);
var_dump($matches);
?>
如果你想要一个更简单的正则表达式,你可以使用/@\w+/
.