猿问

js里正则表达式和replace()的问题?

//字符串

var str='<img src="https://fhfgjfdh/2.gif" alt="/::B">hello<img src="https://idufid/emotion/3.gif" alt="/::|">';

//正则

var preg=/<img(.+)alt="/ig;

//替换为空

str=str.replace(preg,'');

我想得到的结果是/::B">hello/::|">,但现在结果为/::|",要怎么修改呢?

慕尼黑5688855
浏览 505回答 1
1回答

人到中年有点甜

将正则表达式改为如下即可:var&nbsp;preg=/<img(.+?)alt="/ig可知,我仅仅只是在+后面添加了一个?。正则表达式匹配的时候默认采用的是『贪婪模式』,这时(.+)会从第一个<img一直匹配到第二个alt=";添加问号之后,正则表达式匹配模式由『贪婪模式』变为『非贪婪模式』,这时(.+)会从第一个<img匹配到第一个alt=";g表示『全局匹配』,因此(.+)还会匹配第二个<img到第二个alt="。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答