【问题标题】:regex for images not returning expected未返回预期图像的正则表达式
【发布时间】:2013-08-18 23:50:35
【问题描述】:

我已使用以下正则表达式在提要的标签中搜索图像:

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 的那个?这是我需要的。提前感谢您的帮助

【问题讨论】:

    标签: javascript xml regex image titanium


    【解决方案1】:

    您将在第一个匹配项中获得多个组,而不是多个匹配项。这意味着,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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多