0

这个正则表达式只匹配@az 的第一次出现/\@[a-z0-9]+/ipreg_match_all()

在 php 中使用它:preg_match_all('/\@[a-z0-9]+/i', $input, $matches)

4

3 回答 3

1

犯了简单的错误?

@这匹配后跟任何字符的所有实例:a-zA-Z0-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
        )
)
于 2013-10-31T14:45:02.383 回答
0

它将匹配一个且仅一个@,然后匹配一个或多个字母/数字(因为+)。

您的正则表达式也与 i 结尾不区分大小写。

所以它将匹配“@a”、“@aaaAAAAzZZeeEErrRttT1234”,但不匹配“@@aaa”。

于 2013-10-31T14:37:39.920 回答
0

您的正则表达式与 preg_match_all 结合使用是正确的。如果您不确定,只需编写一个小测试脚本:

 <?php
 $input = '@a @b';
 preg_match_all('/\@[a-z0-9]+/i', $input, $matches);
 var_dump($matches);
 ?>

如果你想要一个更简单的正则表达式,你可以使用/@\w+/.

于 2013-10-31T14:41:42.637 回答