猿问

正则,用了问号依旧贪婪匹配问题

var str='第一个视频<iframe frameborder="0" width="640" height="498" src="https://v.qq.com/iframe/player.html?vid=a0678a3ahqx&tiny=0&auto=0" allowfullscreen=""></iframe>第二个视频<iframe frameborder="0" width="640" height="498" src="https://v.qq.com/iframe/player.html?vid=a0678a3ahqx&tiny=0&auto=0" allowfullscreen=""></iframe>没有了'

var result=str.replace(/(<iframe) (.*) (width=\".*?\") (height=\".*?\") (.*)(<.*?iframe>)/g,"$1 $2 width='100%' $5 $6")

console.log(result)

我想把iframe里的width="640" height="498"用正则替换为width="100%"

于是就写上上述正则,发现如果字符串里只有一个iframe是成功替换的,但是如果有2个iframe的话,就只会替换第2个iframe了.

求大神帮助,希望每个iframe里,width="640" height="498"变成width="100%"

在线调试地址http://jsbin.com/dumuxewubu/e...


=============分割线,问题解决啦======================================

发现之前用的非贪婪匹配方法加错了,不该用(.*)? 把问号写在括号外,

用了这个就好了


var result=str.replace(/(<iframe) (.*?) (width=\".*?\") (height=\".*?\") (.*?)(<.*?iframe>)/g,"$1 $2 width='100%' $5 $6")


偶然的你
浏览 449回答 2
2回答

Smart猫小萌

解决啦,发现之前用的非贪婪匹配方法加错了,不该用(.*)? 把问号写在括号外,用了这个就好了解决啦,发现之前用的非贪婪匹配方法加错了,不该用(.*)? 把问号写在括号外,用了这个就好了var result=str.replace(/(<iframe) (.*?) (width=\".*?\") (height=\".*?\") (.*?)(<.*?iframe>)/g,"$1 $2 width='100%' $5 $6")
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答