Regex получить слово между строками JS - PullRequest
2 голосов
/ 25 апреля 2020

У меня есть возвращаемое значение «SomeCode SomeAddressHere SecondAddressHere, SomeCityHere, SomeCountryHere»

Хотел бы получить SomeCityHere , мое текущее регулярное выражение это

var str2 = "SomeCodeHere Los Angeles City, California, USA";
var str2 = str2.match(/(?<= )([^,]+)/)[0];
console.log(str2);

Я хотел бы вернуть Калифорния , но, похоже, я не могу его получить.

Кто-нибудь знает какой-нибудь обходной путь?

Ответы [ 3 ]

2 голосов
/ 25 апреля 2020

Если это не обязательно регулярное выражение:

var str2 = str2.split(",")[1].trim();

или

var str2 = str2.split(", ")[1];
1 голос
/ 25 апреля 2020

Вы могли бы попробовать это.

Это немного отличается от вашего, где я использовал оба Смотри вперед положительный и Смотри позади положительный

var str2 = "SomeCodeHere Los Angeles City, California, USA";
var str2 = str2.match(/(?<=, ).+(?=,)/)[0]
console.log(str2) // California
1 голос
/ 25 апреля 2020

Ваше регулярное выражение не соответствует тому, что вам нужно, потому что

  • (?<= ) соответствует местоположению сразу после пробела, а затем
  • ([^,]+) захватывает в группу 1 любого одного или более символы, отличные от запятой.

В строке типа SomeCodeHere Los Angeles City, California, USA совпадение происходит сразу после первого пробела и идет до первой запятой, то есть Los Angeles City.

Похоже, вы можете использовать не-регулярные решения, например user984003 предлагает , но в случае, если ваши SomeCodeHere, SomeAddressHere или SecondAddressHere тоже могут содержать запятые, Вы можете рассмотреть возможность получения значения между двумя последними запятыми:

/[^\s,][^,]*(?=,[^,]*$)/

См. демо regex .

Подробности

  • [^\s,] - символ, отличный от пробела и запятой
  • [^,]* - 0+ символов, кроме запятой
  • (?=,[^,]*$) - положительный прогноз, требующий запятую и затем 0+ символов, кроме запятой ([^,]*) до конца строки ($).

JS демо:

var str2 = "SomeCodeHere Los Angeles City, California, USA";
var match = str2.match(/[^\s,][^,]*(?=,[^,]*$)/);
if (match) console.log(match[0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...