#javascript #regex
#javascript #регулярное выражение
Вопрос:
Я впервые использую регулярное выражение, я хотел бы заменить второй процент 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)
Ответ №1:
Вы можете использовать
.replace(/^(.*?brgb.*?brgb([^()]*)s*)d (?:.d )?%/, '$130%')
Смотрите демонстрацию регулярных выражений.
Подробные сведения
^
— начало строки(.*?brgb.*?brgb([^()]*)s*)
— Группа 1 ($1
):.*?
— любые нулевые или более символов, отличных от символов разрыва строки, как можно меньшеbrgb.*?
— граница словаrgb
и любые нулевые или более символов, отличных от символов разрыва строки, как можно меньшеbrgb(
—rgb
целое слово и(
символ[^()]*
— ноль или более символов, отличных от(
и)
)
—)
символs*
— ноль или более пробелов
d (?:.d )?
— одна или несколько цифр, а затем необязательная последовательность из a.
и одной или нескольких цифр (не обязательно для текущего примера, но полезно иметь, если у вас есть числа с дробными частями)%
— (на самом деле, это здесь просто для того, чтобы убедиться, что у нас есть процентное значение, оно может и не понадобиться) —%
символ.
Демонстрация 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%')
)