使用regex替换线性梯度百分比



这是我第一次使用regex,我想将第二个rgb百分比从10%替换为30%。如rgb(251, 188, 5) 10%rgb(251, 188, 5) 30%

我试着在网上搜索,但找不到我真正需要的东西。下面是我的测试代码,我只能得到rgb(251, 188, 5),我如何包含10%来替换它?或者直接访问10%并将其替换为30%?

更改前:

linear-gradient(rgb(251, 188, 5), rgb(251, 188, 5) 10%, rgb(223, 223, 223) 0%, rgb(223, 223, 223) 100%)

预期结果:

linear-gradient(rgb(251, 188, 5), rgb(251, 188, 5) 30%, rgb(223, 223, 223) 0%, rgb(223, 223, 223) 100%)

const r = "linear-gradient(rgb(251, 188, 5), rgb(251, 188, 5) 10%, rgb(223, 223, 223) 0%, rgb(223, 223, 223) 100%)".replace(/(?<=rgb.*?)rgb(.*?)/, '30%')
console.log(r)

您可以使用

.replace(/^(.*?brgb.*?brgb([^()]*)s*)d+(?:.d+)?%/, '$130%')

请参阅regex演示。

详细信息

  • ^-字符串的开头
  • (.*?brgb.*?brgb([^()]*)s*)-第1组($1(:
    • .*?-除了换行字符之外的任何零个或多个字符,尽可能少
    • brgb.*?-一个字边界,rgb和除换行符之外的任何零个或多个字符尽可能少
    • brgb(-rgb全词与(字符
    • [^()]*-除()之外的零个或多个字符
    • )-一个)字符
    • s*-零个或多个空白
  • d+(?:.d+)?-一个或多个数字,然后是一个.和一个或几个数字的可选序列(对于当前示例来说不是必需的,但如果您有带小数部分的数字,则很好(
  • %-(实际上,这里只是为了确保我们有一个百分比值,可能没有必要(-一个%字符

JavaScript演示:

console.log(
"linear-gradient(rgb(251, 188, 5), rgb(251, 188, 5) 10%, rgb(223, 223, 223) 0%, rgb(223, 223, 223) 100%)".replace(/^(.*?brgb.*?brgb([^()]*)s*)d+(?:.d+)?%/, '$130%')
)

最新更新