Я пытался извлечь значение перед матчем. Например, у меня есть следующие предложения:
Флорида 22.03.2022 05.04.2022 Служба поддержки заявок рада помочь вам
Флорида, 05.04.2022 Служба поддержки заявок рада помочь вам
В этих примерах я хочу извлечь все, что предшествует последнему вхождению даты. Итак, последнее вхождение даты: 05.04.2022, и я хочу извлечь
03/22/2022
Florida
потому что это отстает от даты сопоставления. Мне удалось получить последнее вхождение даты с помощью следующего регулярного выражения:
var Date = /(\b[0-9]{2}([\-/ \.])[0-9]{2}[\-/ \.][0-9]{4}\b)(?![A-Z]\1)\b(?!.*\b\2\b)/gs.exec(String)[0];
Любое руководство будет высоко оценено.
Может быть, вы хотите /(\S+)\s+\b(\d{2}([-/ .])\d{2}\3\d{4})\b(?!.*\b\d{2}([-/ .])\d{2}\4\d{4}\b)/? См. regex101.com/r/LK9nXX/1
Да, приведенное выше регулярное выражение работает именно так, как мне нужно, но можем ли мы исключить последнее вхождение из результата, потому что оно дает следующие совпадения для обоих примеров: 22.03.2022 05.04.2022 и Флорида 05.04.2022
Не могли бы вы отредактировать вопрос и объяснить, в чем ваша проблема? Вы хотите сказать, что вам нужно 1) 03/22/2022 и 2) Florida из двух упомянутых вами строк? Обратите внимание, что они уже есть в группе 1. Или вы не хотите получать результаты для строки 2?
Предложенное вами регулярное выражение дало следующие совпадения: 22.03.2022 05.04.2020 и Флорида 05.04.2022 Я просто хочу 22.03.2022 и Флорида, исключив дату (05.04.2022)
Это не имеет значения, что соответствует. Вам просто нужно значение группы 1. Конечно, вы также можете использовать просмотр вперед...



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ты можешь использовать
\S+(?=\s+\b(\d{2}([-/ .])\d{2}\2\d{4})\b(?!.*\b\d{2}([-/ .])\d{2}\3\d{4}\b))
См. демонстрация регулярных выражений. Подробности:
\S+ - один или несколько пробелов(?= — положительный прогноз, который требует, чтобы следующие шаблоны совпадали сразу справа от текущего местоположения:\s+ один или несколько пробелов\b(\d{2}([-/ .])\d{2}\2\d{4})\b - Группа 1: граница слова, две цифры, разделитель (захваченный в группе 2), две цифры, тот же символ-разделитель, что и в группе 2, четыре цифры, граница слова(?!.*\b\d{2}([-/ .])\d{2}\3\d{4}\b) - отрицательный поиск вперед при неудачном совпадении, если есть ноль или более символов, отличных от символов разрыва строки, как можно больше, за которыми следует граница слова, две цифры, разделитель (захваченный в группе 3), две цифры, тот же символ-разделитель, что и в Группа 3, четыре цифры, граница слова) - конец положительного прогноза.const texts = ['Florida 03/22/2022 04/05/2022 Bid Support Help Desk is glad to assist you','Florida 04/05/2022 Bid Support Help Desk is glad to assist you'];
const reg = /\S+(?=\s+\b(\d{2}([-/ .])\d{2}\2\d{4})\b(?!.*\b\d{2}([-/ .])\d{2}\3\d{4}\b))/;
for (const text of texts) {
console.info(text, '=>', text.match(reg)?.[0]);
}Ух ты. Это невероятно!
у вас есть эта строка
Florida 03/22/2022 04/05/2022 Bid Support Help Desk is glad to assist you, но вы хотите извлечь Флориду, и обе даты случайны?