应为未返回的图像使用regex
regex for images not returning expected
我使用以下正则表达式在提要中的标记中搜索图像:
var str=items.item(i).getElementsByTagName("content:encoded").item(0).text;
var patt1=/([a-z'-_0-9'/':'.]*'.(jpg|jpeg|png|gif))/i
var urlMatch = str.match(patt1);
然后,我将以下标签中的urlMatch[0]、urlMatch[1]和urlMatch[2]打印到控制台:
<![CDATA[
<p><a href="http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency.jpg"><img class="alignleft size-thumbnail wp-image-56646" alt="Emergency" src="http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency-150x150.jpg" width="150" height="150" /></a></p> <p><strong>The HSE has confi
]]>
这将分别返回以下3个结果:
http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency.jpg,
http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency.jpg,
jpg.
有人能向我解释一下发生了什么事吗?为什么我没有得到名字里有150x150的那个?这是我需要的。感谢您提前提供的帮助
第一个匹配得到多个组,而不是多个匹配。也就是说,urlMatch[0]
是匹配项,urlMatch[1]
是第一个捕获组(第一组括号,顺便说一下,与整个匹配项相同),urlMatch[2]
是模式中的第二组括号(您已经将其包裹在文件扩展名周围)。
您需要使用全局g
标志:
var patt1=/([a-z'-_0-9'/':'.]*'.(jpg|jpeg|png|gif))/ig;
var urlMatch = str.match(patt1);
结果:
[
"http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency.jpg",
"http://www.highlandradio.com/wp-content/uploads/2013/08/Emergency-150x150.jpg"
]
如果确实需要捕获组(除了所有匹配之外),则必须使用RegExp.exec()
。
如果没有,可以使用非捕获组来提高性能。请注意,在任何情况下都不需要外括号,所以无论如何都可以省略。使用非捕获组,这看起来像:
var patt1 = /[a-z'-_0-9´'/:.]*'.(?:jpg|jpeg|png|gif)/ig;
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- nodejs-expressjs上传图像并显示它们
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 使用JSP从服务器检索和显示图像
- 角度:在ng重复上切换图像
- 画廊图像未显示
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- Regex代码只允许一个空格
- Javascript排序的图像弹出窗口..可以't单独弹出
- 画布数据到图像
- Javascript RegEx匹配URL's,但不包括图像
- Regex将标记图像模式与给定的文件名相匹配
- Regex-用图像标记替换URL
- 应为未返回的图像使用regex
- Regex根据文本过滤图像
- 分割图像src属性与普通的香草JavaScript和没有Regex
- Regex从xml中提取图像
- 过滤和隐藏图像与jquery regex
- Regex没有解析出我的图像url
- Javascript Regex-如何提取图像路径之前的最后一个单词