鍍金池/ 問(wèn)答/Java  PHP/ 正則表達(dá)式:[jpg|jpeg|png|bmp|gif]*是什么意思

正則表達(dá)式:[jpg|jpeg|png|bmp|gif]*是什么意思

<?php
$str='&lt;p&gt;32323223&lt;img src=&quot;/Upload/image/ueditor/20180222/1519283654325793.jpg&quot; title=&quot;1519283654325793.jpg&quot; alt=&quot;beian.jpg&quot;/&gt;&lt;/p&gt';

//這個(gè)正則表達(dá)式中“[jpg|jpeg|png|bmp|gif]*”這個(gè)部分是什么意思?
$preg='/\/Upload\/image\/ueditor\/\d*\/\d*\.[jpg|jpeg|png|bmp|gif]*/i';

preg_match($preg, $str,$data);
var_dump($data); //這里能匹配出jpg等后綴 結(jié)果如下:array(1) { [0]=> string(51) "/Upload/image/ueditor/20180222/1519283654325793.jpg" }
//但是正則中[] 中括號(hào)內(nèi)的字符,應(yīng)該只能匹配所包含的任意一個(gè)字符的啊,為什么能把jpg整個(gè)匹配出來(lái)?



回答
編輯回答
薄荷糖

$preg='//Upload/image/ueditor/d/d.[jpg|jpeg|png|bmp|gif]*/i';
這個(gè)是正則是以'/Upload/image/ueditor/'開始的,
d*是指多次匹配數(shù)字,就是匹配一段數(shù)字,
[jpg|jpeg|png|bmp|gif]*是指匹配這個(gè)后綴多次,可以是jpg,也可以是jpgjpg

2018年1月15日 13:01
編輯回答
話寡

典型的正則表達(dá)式中[]的錯(cuò)誤用法

[]只能匹配一個(gè)字符,里面是所有可以匹配成功的字符集合,*是匹配前面的表達(dá)式[0,∞)次。

j、p、g都是[]里面的字符,所以每個(gè)字符都可以匹配成功,又因?yàn)閇]后面是*,所以進(jìn)行了匹配多次分別命中了單個(gè)字符

測(cè)試可以證明

||||||
|j|jbmpj
b|m|p
jeppngjpg
pmb
gpj

這些都可以匹配成功

2017年4月6日 06:41
編輯回答
臭榴蓮

這表達(dá)式有毒

2017年11月26日 18:18