Regex: как извлечь текст до конца строки с несколькими новыми строками? - PullRequest
1 голос
/ 22 марта 2020

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

Пример однократного ввода текста

383 Bukit Timah Road #01-09B Alocassia Apartments Singapore 259727

Пример текста с несколькими строками

383 Bukit Timah Road 
#01-09B Alocassia Apartments 
Singapore 259727

448 Ang Mo Kio 
Avenue 10 #01-1693 
Singapore 560448

383 Bukit Timah Road 
#01-09B Alocassia Apartments 
Singapore 259727

Регулярное выражение:

(\d+ .*\d{6}\b)

Ответы [ 2 ]

1 голос
/ 23 марта 2020

Используйте [^] (укажите c - JavaScript Regex) для сопоставления любому символу, включая разрывы строк

Регулярное выражение:

^(\d+ [^]*?\b\d{6})$

Демонстрация и пояснения

var test = [
`383 Bukit Timah Road #01-09B Alocassia Apartments Singapore 259727`,
`383 Bukit Timah Road 
#01-09B Alocassia Apartments 
Singapore 259727`,
`448 Ang Mo Kio 
Avenue 10 #01-1693 
Singapore 560448`,
`383 Bukit Timah Road 
#01-09B Alocassia Apartments 
Singapore 259727`,
`123 blah blah`,
`blah blah 123456`,
`123 blah blah 1234567`
];
console.log(test.map(function (a) {
  return a + ' :' + /^(\d+ [^]*?\b\d{6})$/.test(a);
}));
1 голос
/ 22 марта 2020

Вы ищете флаг s (одна строка: точка соответствует новой строке). https://regex101.com/r/ZTP1hC/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...