Выделите все после последнего появления строки из 10 чисел

#javascript #regex

Вопрос:

Я пытаюсь получить все от начала до конца последнего телефонного номера (короче говоря, всю контактную информацию по электронной почте и телефонам).

 'Firstname Lastname lorem@gmail.com 0000243598 CAB pilote 001 001',
'Firstname Lastname lorem@gmail.com 0100753503 CAB pilote 001 001',
'Firstname Lastname lorem@gmail.com 0033555381 0022243578 CAB pilote 001 001',
'Firstname Lastname lorem@gmail.com 0400253598 0000664248 CAB pilote 001 001',
 

До сих пор у меня уже есть пользовательское решение длиной 10 футов, но я ищу что-то элегантное в духе d{10,}(.*)$ tho, когда у пользователя есть 2 номера телефонов, он не может получить оба.

Я надеялся выделить «все» после последнего появления, по крайней мере, строки из 10 чисел, но не смог этого сделать. Любая помощь приветствуется.

https://regex101.com/r/R32xC0/1

То regex , что должно быть против номера телефона, время от времени содержит информацию, которая появляется после последнего изменения длины и содержания номера телефона.

Ответ №1:

Вы можете использовать это регулярное выражение в PCRE:

 .*hKd{10,}[^']*
 

Демонстрация регулярных выражений

Сведения о регулярном выражении:

  • .* : Совпадение 0 или более любых символов (жадное совпадение)
  • h : Сопоставьте пробелы
  • K : Сбросить совпадение
  • d{10,} : Сопоставьте 10 или более цифр
  • [^']* : Совпадение 0 или более символов, не являющихся ' символами.

PS: Если PCRE не поддерживается, используйте группу захвата:

 .*s(d{10,}[^']*)
 

Комментарии:

1. Похоже, что второй номер телефона не указан. Я ищу способ добраться Firstname Lastname lorem@gmail.com 0033555381 0022243578 и Firstname Lastname lorem@gmail.com 0000243598 . И я виноват, что не упомянул, что я ищу javascript решение для регулярных выражений.

Ответ №2:

Если я правильно все читаю, и вы хотите

Я пытаюсь получить все от начала и до конца последнего телефонного номера

Затем вы можете сопоставить ' начало строки и фиксировать до последнего вхождения 10 или более цифр в группе 1.

 ^'(.* d{10,})
 

Демонстрация регулярных выражений

 const regex = /^'(.* d{10,})/gm;
const str = `'Firstname Lastname lorem@gmail.com 0000243598 CAB pilote 001 001',
'Firstname Lastname lorem@gmail.com 0000243598 CAB pilote 001 001',
'Firstname Lastname lorem@gmail.com 0000243598 0000243598 CAB pilote 001 001',
'Firstname Lastname lorem@gmail.com 0000243598 0000243598 CAB pilote 001 001',`;

console.log(Array.from(str.matchAll(regex), m => m[1])); 

Если кавычки не являются частью строки, то вы можете опустить группу:

 ^.* d{10,}