这是我第一次使用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%')
)