亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    正則表達(dá)式中的反向預(yù)搜索(下)

    代碼為:

    復(fù)制代碼 代碼如下:
    //程序目的,去掉圖片路徑中的域名
    var str = ‘<img src=”//www.jb51.net/images/logo.gif”>’;
    var reg1 = /(<img)(.*(?=(http|https)://))((http|https)://[^/]*)/gim;
    str.match(reg1);
    alert(str.replace(RegExp.$4,”);

    這個(gè)用法在字符串中只有一個(gè)URL時(shí),是適用的,但是如果字符串中包含多個(gè)域名,例如:

    復(fù)制代碼 代碼如下:
    var str = ‘<img src=”//www.jb51.net/images/logo.gif”>首頁(yè)的<a href=”//www.jb51.net”>鏈接</a>’;

    程序運(yùn)行后去掉的內(nèi)容就是第二個(gè)域名即//www.jb51.net。這是為什么呢?

    仔細(xì)查看正則表達(dá)式會(huì)發(fā)現(xiàn),在使用”(<img) “匹配了<img之后,使用“.*”匹配所有字符直到“http://”或者“https://”。請(qǐng)注意,正是“.*”導(dǎo)致了這個(gè)問(wèn)題的出現(xiàn),這里的“.*”就是說(shuō),一直查找和匹配,盡可能的多匹配,直到最后一個(gè)限定符,也就是說(shuō)術(shù)語(yǔ)中的貪婪(greedy)匹配。很自然,就想到了使用非貪婪的匹配解決這個(gè)問(wèn)題。把正在表達(dá)式改為:

    復(fù)制代碼 代碼如下:
    //與貪婪匹配的差別就是多了一個(gè)問(wèn)號(hào)“?”,貪婪”.*”,非貪婪”.*?”
    var reg1 = /(<img)(.*?(?=(http|https)://))((http|https)://[^/]*)/gim;

    解決問(wèn)題的方法很簡(jiǎn)單,但是也說(shuō)明平時(shí)工作存在的一個(gè)重要問(wèn)題:程序測(cè)試不充分。

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)