最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2009年12月14日 03:17:27   作者:  
在前面正則表達(dá)式中的反向預(yù)搜索中,在JavaScript中利用RegExp對象實現(xiàn)了正則表達(dá)式反向預(yù)搜索的字符串替換功能。

代碼為:

復(fù)制代碼 代碼如下:

//程序目的,去掉圖片路徑中的域名
var str = '<img src="http://www.fzitv.net/images/logo.gif">';
var reg1 = /(\<img)(.*(?=(http|https)\:\/\/))((http|https)\:\/\/[^\/]*)/gim;
str.match(reg1);
alert(str.replace(RegExp.$4,'');

這個用法在字符串中只有一個URL時,是適用的,但是如果字符串中包含多個域名,例如:
復(fù)制代碼 代碼如下:

var str = '<img src="http://www.fzitv.net/images/logo.gif">腳本之家首頁的<a href="http://www.fzitv.net">鏈接</a>';

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

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

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

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

相關(guān)文章

最新評論

竹北市| 佛冈县| 安义县| 筠连县| 伊通| 铜川市| 贵南县| 石阡县| 临桂县| 临桂县| 隆德县| 晋中市| 兰考县| 汾阳市| 仁怀市| 马鞍山市| 蚌埠市| 石嘴山市| 睢宁县| 陇南市| 内江市| 荣昌县| 海晏县| 始兴县| 遵义县| 顺昌县| 漳浦县| 茂名市| 故城县| 正蓝旗| 博野县| 仁化县| 响水县| 河北区| 元氏县| 临桂县| 霍林郭勒市| 太湖县| 潞城市| 盐源县| 崇信县|