невозможно извлечь строку между шаблонами с помощью регулярных выражений - PullRequest
1 голос
/ 09 апреля 2019

Моя входная строка: "CR 1513II2255651 202OL19010200785 FX: 1 NEAT LIMITE mndfgusadg202OL19010200785 NEAT LIMITED NEAT LIMITED HKD 52194.2"

Я хочу извлечь что-нибудь между FX: 1 & первое буквенно-цифровое слово , в этом случае ожидаемый результат: NEAT LIMITE

Я попробовал приведенный ниже код, но не получил нужного решения

var str = "CR 1513II2255651 202OL19010200785 FX:1 NEAT LIMITE mndfgusadg202OL19010200785 NEAT LIMITED NEAT LIMITED HKD 52194.2"

var pattern = "FX:1 (.*) ((?=.*[0-9])(?=.*[a-zA-Z]))+"
str.match(pattern);

1 Ответ

2 голосов
/ 09 апреля 2019

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

var str = "CR 1513II2255651 202OL19010200785 FX:1 NEAT LIMITE mndfgusadg202OL19010200785 NEAT LIMITED NEAT LIMITED HKD 52194.2"

var pattern = /FX:1\s+(.*?)\s+(?:[a-zA-Z]+[0-9]|[0-9]+[a-zA-Z])/;
var result = str.match(pattern);
if (result) {
  console.log(result[1]); // Get only Group 1 value
}

Детали шаблона

  • FX:1 - буквенная строка
  • \s+ - 1+ пробелов
  • (.*?) - Группа 1: любые 0+ символов, как можно меньше
  • \s+ - 1+ пробелов
  • (?:[a-zA-Z]+[0-9]|[0-9]+[a-zA-Z]) - либо
    • [a-zA-Z]+[0-9]- 1+ букв и затем цифра
    • | - или
    • [0-9]+[a-zA-Z] - 1+ цифр и затем буква.

См. График Regulex :

enter image description here

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