亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > regex > 正文

關于IE的RegExp.exec的問題

2020-01-20 22:19:08
字體:
來源:轉載
供稿:網友
代碼如下:
復制代碼 代碼如下:

var st="A[B]C[D]E[F]G";
var reg =//[/w/]/ig;
var s1 = st.replace(reg,"");
var s2=[];
var arr;
while((arr=reg.exec(st))!=null)s2.push(arr[0]);
alert(s1);
alert(s2.join(""));


FF下正確顯示,IE下S2為空.

網上查不到資料,請各位指點一二.

查詢過程中得了個意外收獲
復制代碼 代碼如下:

var st="A[B]C[D]E[F]G";
var reg =//[/w/]/ig;
var s1 = st.replace(reg,"");
var s2=[];

var arr;
while((arr=//[/w/]/ig.exec(st))!=null)s2.push(arr[0]);
alert(s1);
alert(s2.join(""));

該寫法IE死循環RegExp的lastIndex沒有得到更新

In some recent code, I'm using Javascript to parse through the result set of an AJAX call, which happens to be returning a full HTML page. Yes, ideally, I'd have an AJAX call return something usable like JSON, but in this case the PHP back-end code had to remain as is and the front-end adjust to handle the legacy HTML it returned.
I needed to grab a link (1 or more) from the returned HTML page so that I could immediately display those links in separate windows (each was a generated report). So, my first stab at this is shown in the following code example. Basically, we have setup a string to represent the returned HTML, in this case it contains 3 <a> links; and we want to use the standard Javascript RegExp object's exec() method to grab the URLS (href parameter) for each of those links. In our example, we just print them out in an unordered list to see what we've captured. The important lines of code we'll be looking at are highlighted in the example below.
復制代碼 代碼如下:

var s='<a href="x">X</a>/n<a href="y">Y</a>/n<a href="z">Z</a>/n';
document.write('Found the following link URLs in the string:<br/><ul>');
while (matches = /<a href=['"](.*)['"]>.*<//a>/g.exec(s)) {
document.write('<li>' + matches[1] + '</li>/n');
}
document.write('</ul>');

Which, when run, we get the following results in Firefox/Safari/Chrome:
Found the following link URLs in the string:
x
y
z
Our while loop using RegExp.exec() on our in-line regular expression does what it's supposed to and continues to match from where it left off in the string giving us our captured portion in the matches[] array. However, when run in Internet Explorer, we get the following lovely result (at least up until IE tells us the script is no longer responding and asks us to kill it):
Found the following link URLs in the string:
x
x
x
x
x
x
x
x
x
…ad infinitum…
Obviously, we have generated an infinite loop using our code above in IE; but why? The issue is that IE doesn't correctly maintain the lastIndex member for the regular expression object each iteration through the loop. Each time through the loop, which if you look at the highlighted code is in-lined, IE creates a new RegExp object and hence resets the lastIndex member to the beginning of the string. Therefore, we match the first link in the string infinitely as the lastIndex pointer never progresses between matches. There is a way around this, and that is to declare the regular expression separately, outside the loop, (it gets created just once) and then call exec() on that singular RegExp object as follows:
復制代碼 代碼如下:

var rx = /<a href=['"](.*)['"]>.*<//a>/g;
var s='<a href="x">X</a>/n<a href="y">Y</a>/n<a href="z">Z</a>/n';
document.write('Found the following link URLs in the string:<br/><ul>');
while (matches = rx.exec(s)) {
document.write('<li>' + matches[1] + '</li>/n');
}
document.write('</ul>');

Now, the lastIndex member of our RegExp object gets updated correctly and we get the results we expected. Somewhat related to this item is the following interesting lastIndex bug in IE with zero-length matches. Hopefully, this will save someone a headache when trying to debug using Javascript RegExp.exec().
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜国产成人av电影男同| 成人性生交大片免费看视频直播| 理论片在线不卡免费观看| 欧美成人精品在线观看| 久久精品中文字幕| 91在线视频一区| 国产视频精品久久久| 最近中文字幕mv在线一区二区三区四区| 国产小视频国产精品| 日韩欧美国产免费播放| 国产精品丝袜高跟| 91精品久久久久久综合乱菊| 亚洲精品小视频在线观看| 久久男人的天堂| 日韩精品高清在线| 国产男人精品视频| 久久69精品久久久久久国产越南| 欧美国产日韩一区二区| 亚洲人成电影网站色…| 亚洲国内精品在线| 欧美一级淫片播放口| 中文日韩电影网站| 国产国语videosex另类| 欧美精品手机在线| 91精品国产综合久久男男| 色噜噜国产精品视频一区二区| 精品亚洲夜色av98在线观看| 国产精品网站视频| 国产精品久久二区| 91在线观看免费高清完整版在线观看| 国产91免费看片| 久久视频在线播放| 中文字幕成人在线| 日韩av不卡在线| 久久久久久97| 成人黄色短视频在线观看| 欧美最猛性xxxxx(亚洲精品)| 国产成人拍精品视频午夜网站| 性亚洲最疯狂xxxx高清| 色久欧美在线视频观看| 久久久久久久久久国产精品| 日本高清视频一区| 人体精品一二三区| 国产精品国模在线| 亚洲国产成人久久| 欧美性一区二区三区| 欧美一区视频在线| 性欧美激情精品| 日韩精品高清在线| 91国语精品自产拍在线观看性色| 中文字幕在线看视频国产欧美在线看完整| 粗暴蹂躏中文一区二区三区| 97在线视频一区| 欧美视频专区一二在线观看| 成人国产精品日本在线| 成人免费午夜电影| 国模精品一区二区三区色天香| 亚洲精品成人久久电影| 国产综合香蕉五月婷在线| 精品久久久免费| 亚洲jizzjizz日本少妇| 欧美日韩午夜视频在线观看| 欧美孕妇孕交黑巨大网站| 亚洲最大福利视频| 欧美性高潮在线| 欧美性猛交xxxx免费看久久久| 久久综合久久88| 92裸体在线视频网站| 国产日韩欧美电影在线观看| 亚洲人线精品午夜| 日韩精品高清视频| 亚洲最大福利视频| 在线视频亚洲欧美| 日本久久久久久久久久久| 久久九九精品99国产精品| 国产91网红主播在线观看| 久久亚洲精品一区| 国产精品流白浆视频| 成人免费在线视频网址| 热re91久久精品国99热蜜臀| 欧美精品激情blacked18| 久久九九全国免费精品观看| 久久中文久久字幕| 久久亚洲国产成人| 日韩免费精品视频| 91精品国产免费久久久久久| 中文字幕欧美日韩| 亚洲福利视频免费观看| 精品久久久香蕉免费精品视频| 国产视频丨精品|在线观看| 日韩高清av在线| 91麻豆桃色免费看| 欧美日韩高清在线观看| 久久久999国产精品| 国产成人免费av电影| 91精品久久久久久久久久| 综合激情国产一区| 91精品国产色综合| 中文字幕日韩av电影| 午夜精品三级视频福利| 亚洲成人教育av| 国产91成人在在线播放| 91在线视频一区| 国产精品精品视频| 亚洲二区中文字幕| 欧美激情免费看| 91久久精品久久国产性色也91| 国产精品自产拍高潮在线观看| 91久热免费在线视频| 亚洲va国产va天堂va久久| 成人免费淫片视频软件| 国产精品视频大全| 国产一级揄自揄精品视频| 日韩av影片在线观看| 亚洲欧美激情在线视频| 激情av一区二区| 国产91精品最新在线播放| 日韩中文字幕在线精品| 中文字幕日韩电影| 2023亚洲男人天堂| 国内精品久久久久影院 日本资源| 亚洲成年网站在线观看| 国产亚洲激情视频在线| 伊人久久久久久久久久久久久| 久久久国产一区二区| 国产精品日韩欧美大师| 国产精品自在线| 欧美在线性爱视频| 亚洲999一在线观看www| 日本三级久久久| 国产成人在线亚洲欧美| 久久久久久久久亚洲| 久久久999成人| 国产精品高清免费在线观看| 狠狠干狠狠久久| 亚洲天堂第二页| 91夜夜未满十八勿入爽爽影院| 97视频在线播放| 久久久午夜视频| 中文字幕精品www乱入免费视频| 国产成人福利夜色影视| 精品国产老师黑色丝袜高跟鞋| 日韩在线观看精品| 亚洲男人天堂九九视频| 久久精品国产清自在天天线| 97在线免费观看视频| 欧美精品一区二区三区国产精品| 91亚洲国产成人久久精品网站| 国产精品777| 91亚洲国产成人精品性色| 国产精品青青在线观看爽香蕉| 欧美精品做受xxx性少妇| 欧美综合一区第一页| 国产一区二区丝袜高跟鞋图片| 国产一区二区色| 久久99精品视频一区97| 精品久久久久久国产| 午夜伦理精品一区| 在线日韩中文字幕| 国产精品视频白浆免费视频| 亚洲国产天堂久久综合网| 日韩精品在线观| 亚洲精品白浆高清久久久久久| 国产精品激情av电影在线观看|