#javascript #regex
#javascript #регулярное выражение
Вопрос:
Мне нужно заменить все экземпляры подстроки модифицированной версией подстроки, могу ли я сделать что-то вроде:
const regex = /[0-9]{4}[A-Z]{3}/g; // format: 0000ABC
myString = myString.replaceAll(regex, regex " I'm modified");
Абстрактный пример
Если myString является
5000ABC, 250XYZ, GEN3000
и я хочу изменить определенные шаблоны из 4 цифр и 3 букв, мой ожидаемый результат
5000ABC я изменен, 250XYZ, 1000DEF я изменен, GEN3000
Комментарии:
1. Почему бы и нет
myString.replaceAll(regex, "$amp; I'm modified")
2. Какой именно результат вы ожидаете?
3. @epascarello обновил вопрос для абстрактного примера
Ответ №1:
Не уверен, что я понимаю, какой формат вывода вы хотите, но, судя по вашему примеру, похоже, что вы хотите добавить некоторую строку после каждого совпадения. Поехали:
const input = 'Some text with 1234ABC and 5678XYZ';
const regex = /([0-9]{4}[A-Z]{3})/g; // format: 0000ABC
var result = input.replace(regex, "$1 I'm modified");
console.log('input: ' input);
console.log('result: ' result);
Вывод:
input: Some text with 1234ABC and 5678XYZ
result: Some text with 1234ABC I'm modified and 5678XYZ I'm modified
Объяснение:
- запишите свой шаблон в круглые скобки для последующего использования
- используйте строку, в которой вы можете ссылаться на захваченный шаблон, и добавляйте / добавляйте любой текст, который вы хотите
.replace()
$1
Ответ №2:
На данный момент у меня есть обходной путь
const regex = /[0-9]{4}[A-Z]{3}/g;
var matches = myString.match(regex);
if (matches amp;amp; matches.length > 0) {
for (var match of matches) {
var modified = match "I'm modified";
myString = myString.replaceAll(match, modified)
}
}