【问题标题】:Regex to replace spaces in part of a string in javascript正则表达式替换javascript中部分字符串的空格
【发布时间】:2017-11-13 22:19:53
【问题描述】:

我正在站点内的某些图像上实现 srcset 属性并遇到问题,因为 Chrome 不喜欢包含空格的 srcset 图像 url。 我的源 HTML 有许多图像标签,如下所示:

<img src="/images/image 1.jpg" alt="My alt" sizes="100vw" srcset="/images/image 1 136.jpg 136w, /images/image 1 165 165w, /images/image 1 286 286w">

我想要做的是用 %20 替换 srcset 中的空格,所以它看起来像:

<img src="/images/image 1.jpg" alt="My alt" sizes="100vw" srcset="/images/image%201%20136.jpg 136w, /images/image%201%20165 165w, /images/image%201%20286 286w">

为了简化问题 - 如果我可以替换以下 src 中的 n 个空格,那么我可以解决我的问题:&lt;img src="/images/image any number of spaces.jpg" /&gt;

我认为唯一的解决方案是使用lookbehind,但由于我在javascript 中这样做,它不受支持,所以我很难过。我通常会使用类似:myText.replace(/src=".[^"]*"/gi,'%20') 的东西,但这会替换整个字符串。 See this example.

我怀疑这个问题无法解决(这只是一个临时措施,同时我们测试了 srcset 的影响,之后我可以从源头修复它) - 但我不知道我是否有什么问题我没想到这会让我实现我想要的。

【问题讨论】:

  • getElementsByTagName 获取图像,get/setAttribute 和 srcset 每个使用后者和 encodeURIComponent。
  • 你是如何创建 HTML 的?你能发布你的代码吗?
  • HTML 来自第 3 方,因此我无法直接对其进行任何更改。它是一个返回的 HTML 字符串,其中包含我试图将其操作到 srcset 标记中的许多图像(除此之外,我能够对提要进行所有其他我需要的更改)。

标签: javascript regex replace spaces


【解决方案1】:

你可以把它分成两组并替换第二组中的空格

(img src="\/images\/)(.*\d\s\d{3}?)(\.jpg)?(\s\d{3}w)

img src="/images/     image 1 136.jpg 136w
img src="/images/     image%201%20136.jpg 136w

see it here

【讨论】:

    【解决方案2】:

    试试这个:

    // your link    
    //    var link = "/images/image 1 136.jpg 136w, /images/image 1 165 165w, /images/image 1 286 286w"
    //   var src = link.substring(0, link.indexOf('.jpg'))
    // your result
    //    var result = encodeURI(src) + link.substring(link.indexOf(.jpg) + 4)
    

    对不起,我误解了问题

    【讨论】:

    • 是的 - 我考虑过如果它只是一个标签,我可以提取它,修复它并把它放回去,但不幸的是不是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多