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