Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript正则表达式匹配所有_Javascript_Regex - Fatal编程技术网

javascript正则表达式匹配所有

javascript正则表达式匹配所有,javascript,regex,Javascript,Regex,有一条像绳子一样的线 <img src="images/_attachments/07-08.jpg" style="width: 520px; height: 693px;" /><img src="images/_attachments/09-11.jpg" style="width: 520px; height: 693px;" /> 但是我得到的只是路径,而不是文件名,我如何解决这个问题?您的路径匹配非常贪婪,因此您无法获得文件名所需的结果。如果将其设置为非贪婪

有一条像绳子一样的线

<img src="images/_attachments/07-08.jpg" style="width: 520px; height: 693px;" /><img src="images/_attachments/09-11.jpg" style="width: 520px; height: 693px;" />

但是我得到的只是路径,而不是文件名,我如何解决这个问题?

您的路径匹配非常贪婪,因此您无法获得文件名所需的结果。如果将其设置为非贪婪,它将只匹配
图像/
,因此您需要将其加倍,或者使文件名匹配器不包含斜杠。将您的模式更改为

var strPattern=new RegExp('<img.*?src="(.*?\/([^/"]*))".*?>', 'g');
//                                        ^
var strPattern=newregexp(''g');
//                                        ^

顺便说一句,一个正则表达式文本
//g
看起来会更好。

这样你就不匹配“或>”,也许它会有帮助

var strPattern=new RegExp('<img [^>]*src="([^>"]+\/([^>"]+))"[^>]*?>', 'g');
var strPattern=newregexp(“]+\/([^>“]+)”[^>]*?>”,“g”);

使用此模式匹配属性内容:

_strPattern=new RegExp('<img.*?src="([^">]*\/([^">]*?))".*?>', 'g');
\u strPattern=newregexp(']*\/([^“>]*?)”*?>,'g');
如果使用“.”而不是“^”>”,正则表达式可能会跨越几个标记


您还需要使用
\u arrmaches[1]
而不是
\u arrmaches[2]
来获取完整路径。

您需要为其创建另一个模式。对不起,我尝试了一下,它仍然显示“images/\u attachments/07-08.jpg”,而不是07-08.jpg!啊,我明白了。现在也修复了。
_strPattern=new RegExp('<img.*?src="([^">]*\/([^">]*?))".*?>', 'g');