Регулярное выражение для сопоставления только с частью, в которой нет следующих нескольких пробелов

#javascript #node.js #regex

#javascript #node.js #регулярное выражение

Вопрос:

У меня есть некоторый текст, который находится слева и справа по центру экрана и выглядит следующим образом

 From:
DEMO - Sliced Invoices                                            Order Number
Suite 5A-1204                          Order Number
123 Somewhere Street                  Order Number
Your City AZ 12345                      Order Number
admin@slicedinvoices.com                  Order Number
 

Чего я пытаюсь добиться, так это написать регулярное выражение, чтобы получать только левые части, игнорируя часть номера заказа, которая может быть любым текстом, а не конкретным номером заказа… Возможно ли это вообще, я безуспешно пытался игнорировать несколько пробелов.

До сих пор я придумал это:

 F.{1,250}?: nD.{1,250}?  
 

Который гласит

 From:
Demo - Sliced Invoices  
 

Но я не могу перейти к следующей строке из-за того, что номер заказа находится в той же строке…

Ответ №1:

Вы можете использовать это

 ^.*?(?=s{2,}|n)
 
  • ^ — начало строки
  • . ? — Сопоставьте что-либо, кроме новой строки, с нулем или более раз
  • (?=s{2,}|n) — Положительный поиск для проверки двух или более продолжений пробела или новой строки
 let str = `From:
DEMO - Sliced Invoices                                            Order Number
Suite 5A-1204                          Order Number
123 Somewhere Street                  Order Number
Your City AZ 12345                      Order Number
admin@slicedinvoices.com                  Order Number`

let op = str.match(/^. ?(?=s{2,}|n)/gm)

console.log(op) 

Ответ №2:

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

 const regex = /^(.*?)(?= {2,}|n)/gm;
const txt = document.querySelector('div').textContent;
const matches = txt.match(regex);
console.log(matches); 
 <div>From:
DEMO - Sliced Invoices                                            Order Number
Suite 5A-1204                          Order Number
123 Somewhere Street                  Order Number
Your City AZ 12345                      Order Number
admin@slicedinvoices.com                  Order Number</div>