#javascript #regex
#javascript #регулярное выражение
Вопрос:
У меня есть упорядоченный список с именами и адресами, который структурирован следующим образом:
1. Last, First 123 Main St buncha
buncha buncha
2. Lasta, Firsta 234 Lane St etc etc
Итак, мне нужно регулярное выражение, которое находит число, которое сразу следует за числом с точкой. Итак, в данном случае массив, содержащий [123, 234]
. У меня есть пара шаблонов, которые я пробовал. Тот, который я считаю самым близким,
/(?![0-9] .)[0-9] /gim;
к сожалению, это просто возвращает каждое число, но я думаю, что оно находится в нужной области. Любая помощь будет оценена.
Ответ №1:
Используйте положительный взгляд назад, чтобы явно сопоставить число, точку и текст между ними и номером в адресе.
const string = `1. Last, First 123 Main St buncha
buncha buncha
2. Lasta, Firsta 234 Lane St etc etc`;
let regex = /(?<=^d .D*)d /gm;
console.log(string.match(regex));
Ответ №2:
Что-то вроде этого
const source =
`1. Last, First 123 Main St buncha
buncha buncha
2. Lasta, Firsta 234 Lane St etc etc`;
const result = source.match(/(?<=(d .. ))d /gm);
console.log(result);
Ответ №3:
Вы также можете использовать группу захвата
^d .D*(d )
Объяснение
^
Начало строкиd .
Сопоставьте 1 цифр и.
D*
Сопоставьте 0 любому символу, кроме цифры(d )
Группа захвата 1, соответствует 1 цифрам
Демонстрация регулярных выражений
const regex = /^d .D*(d )/gm;
const str = `1. Last, First 123 Main St buncha
buncha buncha
2. Lasta, Firsta 234 Lane St etc etc`;
let res = Array.from(str.matchAll(regex), m => m[1]);
console.log(res);