#javascript #regex
Вопрос:
Учитывая следующую строку:
const myString = "This is my comment content. [~firstName.lastName]";
Что такое регулярное выражение javascript для извлечения «Имени» и «фамилии»?
Что такое регулярное выражение javascript для извлечения содержимого за вычетом «[~Имя.фамилия]»?
Я не разбираюсь в регулярных выражениях.
Ответ №1:
const myString = "This is my comment content. [~firstName.lastName]";
const first = myString.match(/.*~(.*)./)[1]
const last = myString.match(/.*.(.*)]/)[1]
const both = myString.match(/.*~(.*)]/)[1]
console.log(first)
console.log(last)
console.log(both)
Ответ №2:
Вы можете попробовать это-
let myString = "This is my comment content. [~firstName.lastName] and the original name is [~John.Doe]";
const regex = /[~([^]] ).([^]] )]/g;
let match = regex.exec(myString);
const names = [];
while(match !== null) {
names.push({firstName: match[1], lastName: match[2]});
match = regex.exec(myString);
}
// Remove the pattern from the original string.
myString = myString.replace(regex, '');
console.log(names, myString);
Этот код найдет все совпадения, найденные для шаблона.
Ответ №3:
Вы можете настроить таргетинг на каждое имя отдельно. match
вернет полное совпадение в качестве первого элемента массива, а группировки, указанные в (
и )
в регулярном выражении, в качестве последующих элементов.
const str = 'This is my comment content. [~firstName.lastName]';
const regex = /[~(. ).(. )]/;
console.log(str.match(regex));
Или вы можете нацелиться только на символы в квадратных скобках, а затем split
на .
.
const str = 'This is my comment content. [~firstName.lastName]';
const regex = /[~(. )]/;
console.log(str.match(regex)[1].split('.'));
Комментарии:
1. Это может не удаться для нескольких вхождений шаблона
[~firstName.lastName]
.2. Я основываю свои ответы только на информации, представленной в вопросе.