正則表達(dá)式中的反向預(yù)搜索(下)
更新時間:2009年12月14日 03:17:27 作者:
在前面正則表達(dá)式中的反向預(yù)搜索中,在JavaScript中利用RegExp對象實現(xiàn)了正則表達(dá)式反向預(yù)搜索的字符串替換功能。
代碼為:
復(fù)制代碼 代碼如下:
//程序目的,去掉圖片路徑中的域名
var str = '<img src="http://www.dhdzp.com/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.dhdzp.com/images/logo.gif">腳本之家首頁的<a href="http://www.dhdzp.com">鏈接</a>';
程序運行后去掉的內(nèi)容就是第二個域名即http://www.dhdzp.com。這是為什么呢?
仔細(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)文章
js正則表達(dá)式 匹配兩個特定字符間的內(nèi)容示例
今天小編就為大家分享一篇js正則表達(dá)式 匹配兩個特定字符間的內(nèi)容示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
8個你應(yīng)該了解的正則表達(dá)式提高你的工作效率
正則表達(dá)式也可以被當(dāng)作是一門語言,入門時可能很吃力,不過一旦學(xué)會了就方便很多,在處理一些比較復(fù)雜的替換時,正則表達(dá)式就會發(fā)揮它的真正作用,本文整理了一些常用的正則,感興趣的朋友可以了解下,或許對你有所幫助2013-01-01
javascript中基于replace函數(shù)的正則表達(dá)式語法
replace()最js中比較簡單的字符替換函數(shù),但是它也是可以跟正則結(jié)合實現(xiàn)強大的字符替換效果。2011-02-02
正則表達(dá)式初運用之認(rèn)證界面的實現(xiàn)代碼
這篇文章主要介紹了正則表達(dá)式初運用之認(rèn)證界面的實現(xiàn)代碼,代碼簡單易懂,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧2016-09-09
JavaScript 正則表達(dá)式驗證函數(shù)代碼
上篇文章《JavaScript驗證正則表達(dá)式大全》說的是javascript中使用的正則表達(dá)式的例子,但是沒有說這些正則表達(dá)式如何使用,現(xiàn)在給大家?guī)讉€例子,大家可以看看。2010-05-05

