为了账号安全,请及时绑定邮箱和手机立即绑定

关于正则匹配,preg_match()函数是如何运作的?

我先是写了以下代码,

<?php
$subject = "my email is spark@imooc.com";
//在这里补充代码,实现正则匹配,并输出邮箱地址
$pattern='/\w+@\w+\.(com||cm)/';
preg_match($pattern,$subject,$match);
//echo $match[0];
print_r($match);

结果是:
Array
(
    [0] => spark@imooc.com
    [1] => com
)
有两个,第二个是com
然后我修改了一下正则表达式;代码如下:
<?php
$subject = "my email is spark@imooc.com";
//在这里补充代码,实现正则匹配,并输出邮箱地址
$pattern='/\w+@\w+\.\w+/';
preg_match($pattern,$subject,$match);
//echo $match[0];
print_r($match);

结果是:
Array
(
    [0] => spark@imooc.com
)
就没有[1]了。
为什么呢?
而且,我发现例子里的:
$subject = "abcdef";
$pattern = '/a(.*?)d/';
preg_match($pattern, $subject, $matches);
print_r($matches); //结果为:Array ( [0] => abcd [1] => bc )
例子里输出的bc是abcd的中间两个,而我第一个代码输出的com是邮箱的末尾。这是为什么?


正在回答

0 回答

添加的圆括号相当于给要匹配的内容分组,preg_match()是把整体匹配和分组匹配的内容都输出了

$subject = "my email is spark@imooc.com";

$pattern='/(\w+)@(\w+)\.(\w+)/';

你把正则改成这样输出下,我想你应该就明白了

1 回复 有任何疑惑可以回复我~
#1

蜗牛的壳 提问者

嗯,确实如此!非常感谢!
2016-02-28 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

关于正则匹配,preg_match()函数是如何运作的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信