站長資訊網
最全最豐富的資訊網站

正則表達式中的反向預搜索(下)

代碼為:

復制代碼 代碼如下:
//程序目的,去掉圖片路徑中的域名
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,”);

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

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

程序運行后去掉的內容就是第二個域名即//www.jb51.net。這是為什么呢?

仔細查看正則表達式會發現,在使用”(<img) “匹配了<img之后,使用“.*”匹配所有字符直到“http://”或者“https://”。請注意,正是“.*”導致了這個問題的出現,這里的“.*”就是說,一直查找和匹配,盡可能的多匹配,直到最后一個限定符,也就是說術語中的貪婪(greedy)匹配。很自然,就想到了使用非貪婪的匹配解決這個問題。把正在表達式改為:

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

解決問題的方法很簡單,但是也說明平時工作存在的一個重要問題:程序測試不充分。

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
五月天婷亚洲天综合网精品偷 | 无码日韩人妻AV一区二区三区| 久久九九国产精品怡红院| 精品无人区无码乱码毛片国产| 精品日韩一区二区| 日韩国产一区二区| 国产精品综合在线| 四虎精品在线视频| 中文国产成人精品久久不卡| 国产精品久久久久…| 久久精品国产免费观看| 91精品国产综合久| 99re视频精品全部免费| 亚洲国产精品久久久久久| 亚洲处破女AV日韩精品| 日本精品不卡视频| 国产成人精品日本亚洲网站| 久草精品视频在线播放| 久久精品视频16| 国产精品jizz视频| 久久国产精品久久| 欧洲精品视频在线观看| 国产成人vr精品a视频| 久久精品亚洲一区二区| 久久精品国产亚洲AV麻豆不卡| 国产精品多人p群无码| 精品999久久久久久中文字幕| 久久er热视频在这里精品| 精品久久久久久国产91| 亚洲午夜精品一区二区麻豆| 中文字幕国产精品| 精品国产一区AV天美传媒| 国产成人精品免费视频大全麻豆| 精品国产a∨无码一区二区三区| 日本一二三精品黑人区| 97久久精品无码一区二区天美| 亚洲精品天堂在线观看| 亚洲国产精品成人综合色在线| 久久精品无码一区二区三区不卡| 夜夜精品视频一区二区| 国产精品亚洲专区在线播放|