麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Regex > 正文

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

2020-03-16 21:14:11
字體:
來源:轉載
供稿:網友
在前面正則表達式中的反向預搜索中,在JavaScript中利用RegExp對象實現了正則表達式反向預搜索的字符串替換功能。
 
 

代碼為: 

復制代碼代碼如下:

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

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

var str = '<img src="http://www.companysz.com/images/logo.gif">武林網首頁的<a href="http://www.companysz.com">鏈接</a>'; 

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

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美一级淫片a免费播放口 91九色蝌蚪国产 | 2018亚洲男人天堂 | 国产一区二区免费看 | 欧美a∨亚洲欧美亚洲 | 中文字幕在线免费观看电影 | 欧美一区二区片 | 精品一区二区三区欧美 | 特一级黄色毛片 | 久久精品亚洲精品国产欧美kt∨ | 日韩午夜一区二区三区 | 亚洲性生活视频 | 国产羞羞视频在线免费观看 | 国产影视 | 狠狠干天天操 | 国产一级毛片国语版 | 国产精品野外av久久久 | 成人情欲视频在线看免费 | 亚洲一区在线免费视频 | 久久精品免费网站 | 毛片大全免费看 | 国产精品成人久久 | 久久精品国产99久久久古代 | 视频在线亚洲 | 日韩视频一区二区三区四区 | 天堂成人国产精品一区 | chinesehd天美原创xxxx | 91成人在线网站 | 亚洲一区成人在线 | 成人在线观看免费 | 欧美乱码精品一区 | 康妮卡特欧美精品一区 | av免费大全| 久久精品一二三区白丝高潮 | 国产成人羞羞视频在线 | 国产69精品久久久久久久久久 | 精品国产乱码久久久久久丨区2区 | 日日综合 | 91九色视频在线播放 | 久久久久国产成人免费精品免费 | 在线观看福利网站 | 亚洲极色 |