使用javascript替换为通配符来更改字符串中的width属性

bob*_*e01 2 javascript regex string replace

我正在尝试使用.replace('width=".*"', 'width="100"'),因为width可能是原始的任何东西string.但此刻并没有改​​变任何事情.

https://jsfiddle.net/bobbyrne01/8p404z5t/

HTML

<div id="1"></div><br/>
<div id="2"></div>
Run Code Online (Sandbox Code Playgroud)

JavaScript的

var fullURL = '<iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fi.imgur.com%2F…key=2aa3c4d5f3de4f5b9120b660ad850dc9&amp;type=video%2Fmp4&amp;schema=imgur" width="406" height="720" scrolling="no" frameborder="0" allowfullscreen&gt;&lt;/iframe>';

document.getElementById('1').textContent = fullURL;

var moddedURL = fullURL.replace('width=".*"', 'width="100"');
document.getElementById('2').textContent = moddedURL;
Run Code Online (Sandbox Code Playgroud)

结果..

<iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fi.imgur.com%2F…key=2aa3c4d5f3de4f5b9120b660ad850dc9&amp;type=video%2Fmp4&amp;schema=imgur" width="406" height="720" scrolling="no" frameborder="0" allowfullscreen&gt;&lt;/iframe>

<iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fi.imgur.com%2F…key=2aa3c4d5f3de4f5b9120b660ad850dc9&amp;type=video%2Fmp4&amp;schema=imgur" width="406" height="720" scrolling="no" frameborder="0" allowfullscreen&gt;&lt;/iframe>
Run Code Online (Sandbox Code Playgroud)

the*_*eye 7

如果需要使用通配符,则需要使用正则表达式,如下所示

var moddedURL = fullURL.replace(/width=".*?"/, 'width="100"');
Run Code Online (Sandbox Code Playgroud)

在这里,我们使用/width=".*?"/,这是一个正则表达式,它意味着匹配模式的任何字符串width="跟随任何出现零次或多次的字符,直到我们看到第一个".

注意: .*实际上是贪心的.如果我们?之后不使用它,它将匹配字符串中的所有内容,直到最后一个".这就是为什么我们通过使用明确地使它非贪婪,?并且它将在第一次出现时停止匹配".


事实上,你知道它只是数字.所以你可以严格按照这个匹配

var moddedURL = fullURL.replace(/width="\d*"/, 'width="100"');
Run Code Online (Sandbox Code Playgroud)

现在,它将匹配零个或多个数字,而不是任何字符.现在我们不使用?修饰符,因为当它找到一个不是数字的字符时,RegEx引擎将停止匹配.所以我们不必在此担心贪婪匹配,除非你的字符串在数字周围有空格.

  • @Rajesh`\d`匹配一个数字,表达式`\ d*`匹配零个或多个`\ d'连续发生.例如,`"9"`将匹配`"\ d"`,但不匹配"999"`. (2认同)