扫码关注官方订阅号
//字符串 var str='hello'; //正则 var preg=/
我想得到的结果是/::B">hello/::|">,但现在结果为/::|",要怎么修改呢?
/::B">hello/::|">
/::|"
认证高级PHP讲师
将正则表达式改为如下即可:
var preg=/<img(.+?)alt="/ig
可知,我仅仅只是在+后面添加了一个?。
正则表达式匹配的时候默认采用的是『贪婪模式』,这时(.+)会从第一个<img一直匹配到第二个alt=";
添加问号之后,正则表达式匹配模式由『贪婪模式』变为『非贪婪模式』,这时(.+)会从第一个<img匹配到第一个alt=";g表示『全局匹配』,因此(.+)还会匹配第二个<img到第二个alt="。
我给你提供一个思路吧,先把img拆开,明显是两个格式相同的img,放在数组中遍历循环就得到了。
/<img[^>]+alt="([^"]+)/ig
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
将正则表达式改为如下即可:
可知,我仅仅只是在+后面添加了一个?。
正则表达式匹配的时候默认采用的是『贪婪模式』,这时(.+)会从第一个<img一直匹配到第二个alt=";
添加问号之后,正则表达式匹配模式由『贪婪模式』变为『非贪婪模式』,这时(.+)会从第一个<img匹配到第一个alt=";g表示『全局匹配』,因此(.+)还会匹配第二个<img到第二个alt="。
我给你提供一个思路吧,先把img拆开,明显是两个格式相同的img,放在数组中遍历循环就得到了。
/<img[^>]+alt="([^"]+)/ig