Продолжайте искать строки, используя тот же Regex - PullRequest
0 голосов
/ 25 января 2020

Как я могу продолжать искать шаблон регулярных выражений после некоторой строки? Например ... После строки "Tel .:" найти все числа после нее ... Даже если они разделены другими символами

"Tel: 324234 - 2 123123 (22)" extract " 324234212312322 "(но с использованием выражения регулярного выражения, без других функций или регулярных выражений)

Я уже выполнил извлечение первых чисел после" Тел .: "

(?<=Tel\.:\s)\d*

https://regexr.com/4sspo

Как я уже сказал, я хотел бы узнать, как продолжать искать группы "\ d" после того, как первая группа нашла

Ответы [ 3 ]

1 голос
/ 25 января 2020

Вы можете использовать метод замены и регулярное выражение с флагом g.

var str = "Tel: 324234 -- 2 123123 (22)";
var numString = str.replace(/\D/g, "");

numString будет "324234212312322". Это может быть немного сложнее для более сложных паттернов, но все равно должно работать, если вы осторожны.

0 голосов
/ 26 января 2020

Захватить это, используя только регулярное выражение, невозможно, если вы говорите, что вы захватываете все числа в произвольном формате.

Поскольку произвольный формат означает, что у вас будет произвольное количество разделителей, значит, вам нужно сопоставить группа несколько раз.

Находясь в Javascript, вы можете получить только последнюю группу, повторенную в результате: { ссылка }

0 голосов
/ 25 января 2020

Вместо того, чтобы использовать вид сзади (который не поддерживается всеми браузерами), вы можете сопоставить Tel с необязательной точкой, двоеточием и символом пробела \.?:\s и записать в группу \bTel\.?:\s(.+), что следует за ней. .

\bTel\.?:\s(.+)

Затем для каждой первой группы захвата замените все не цифры.

const regex = /\bTel\.?:\s(.+)/g;
const str = `Tel: 324234 -- 2 123123 (22)

11111111111111111111 Tel.: 145628 810 - 7469
`;
let m;

while ((m = regex.exec(str)) !== null) {
  // This is necessary to avoid infinite loops with zero-width matches
  if (m.index === regex.lastIndex) {
    regex.lastIndex++;
  }

  console.log(m[1].replace(/\D+/g, ''));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...