Регулярное выражение для первого числа после числа и точки

#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);