2016-11-22 53 views
-6

假设我有以下文字如何使用正则表达式提取字符串?

for (;;);{"__ar":1,"__sf":"k","payload":null,"domops":[["appendContent","^div.fbProfileBrowserListContainer",true,{"__html":"\u003Cdiv class=\"fbProfileBrowserList expandedList\" id=\"100008123852509\">\u003Cul class=\"uiList clearfix _5bbv _4kg _704 _4ks\">\u003Cli class=\"fbProfileBrowserListItem\">\u003Cdiv class=\"clearfix _5qo4\">\u003Ca class=\"_8o _8t lfloat _ohe\" href=\"https:\/\/www.facebook.com\/tasvirmanepal\/?fref=pb\" tabindex=\"-1\" aria-hidden=\"true\">\u003Cimg class=\"_s0 _rw img\" src=\"https:\/\/fb-s-b-a.akamaihd.net\/h-ak-xta1\/v\/t1.0-1\/c13.0.50.50\/p50x50\/12246747_952307471472706_3389977056619055535_n.jpg?oh=fdcd99bd098ad7d60b67701358bdbc97&oe=58D45D87&__gda__=1489984135_7befa40c475cf7f2a6aa021e97d7f429\" alt=\"\" \/>\u003C\/a>\u003Cdiv class=\"clearfix _42ef\">\u003Cdiv class=\"_6a rfloat _ohf\">\u003Cdiv class=\"_6a _6b\" style=\"height:50px\">\u003C\/div>\u003Cdiv class=\"_6a _6b\">\u003Cdiv class=\"_5t4x\">\u003Cspan

现在,我想提取字符串如

src=\"https:\/\/fb-s-b-a.akamaihd.net\/h-ak-xta1\/v\/t1.0-1\/c13.0.50.50\/p50x50\/12246747_952307471472706_3389977056619055535_n.jpg?oh=fdcd99bd098ad7d60b67701358bdbc97&oe=58D45D87&__gda__=1489984135_7befa40c475cf7f2a6aa021e97d7f429\"

+1

请分享你有这么远,为什么它不提供所期望的结果的代码。 – wdosanjos

回答

0

一个正则表达式的工作原理与逻辑,先定义逻辑,然后写正则表达式。

说:

  • 这场比赛是双引号之间,并且犯规包含双引号?
  • 比赛由src=\"

一个网站就像http://regexr.com/,你可以很方便地测试正则表达式的前面。

这是一个可能的正则表达式:src=\\\"[^"]*"但它不会帮助你与角落案件。

它基本上匹配以src\"开头的所有内容,然后除了双引号"之外的任何(零个或多个)字符,然后还包括双引号。

0

请试试这个:

const regex = /src=\\"[^"]*?\\"/g; 
 
const str = `for (;;);{"__ar":1,"__sf":"k","payload":null,"domops":[["appendContent","^div.fbProfileBrowserListContainer",true,{"__html":"\\u003Cdiv class=\\"fbProfileBrowserList expandedList\\" id=\\"100008123852509\\">\\u003Cul class=\\"uiList clearfix _5bbv _4kg _704 _4ks\\">\\u003Cli class=\\"fbProfileBrowserListItem\\">\\u003Cdiv class=\\"clearfix _5qo4\\">\\u003Ca class=\\"_8o _8t lfloat _ohe\\" href=\\"https:\\/\\/www.facebook.com\\/tasvirmanepal\\/?fref=pb\\" tabindex=\\"-1\\" aria-hidden=\\"true\\">\\u003Cimg class=\\"_s0 _rw img\\" src=\\"https:\\/\\/fb-s-b-a.akamaihd.net\\/h-ak-xta1\\/v\\/t1.0-1\\/c13.0.50.50\\/p50x50\\/12246747_952307471472706_3389977056619055535_n.jpg?oh=fdcd99bd098ad7d60b67701358bdbc97&oe=58D45D87&__gda__=1489984135_7befa40c475cf7f2a6aa021e97d7f429\\" alt=\\"\\" \\/>\\u003C\\/a>\\u003Cdiv class=\\"clearfix _42ef\\">\\u003Cdiv class=\\"_6a rfloat _ohf\\">\\u003Cdiv class=\\"_6a _6b\\" style=\\"height:50px\\">\\u003C\\/div>\\u003Cdiv class=\\"_6a _6b\\">\\u003Cdiv class=\\"_5t4x\\">\\u003Cspan`; 
 
let m; 
 

 
while ((m = regex.exec(str)) !== null) { 
 
    // This is necessary to avoid infinite loops with zero-width matches 
 
    if (m.index === regex.lastIndex) { 
 
     regex.lastIndex++; 
 
    } 
 
    
 
    // The result can be accessed through the `m`-variable. 
 
    m.forEach((match, groupIndex) => { 
 
     console.log(`Found match, group ${groupIndex}: ${match}`); 
 
    }); 
 
}

相关问题