Javascript использование регулярного выражения для получения даты в середине объекта - PullRequest
1 голос
/ 09 марта 2020

У меня есть этот объект "FILTER_DATE":"LAST_MONTH", "FROM_DATE":"2/9/2020", "TO_DATE":"3/9/2020", и мне нужно извлечь значение FROM_DATE 2/9/2020. Я пытаюсь использовать замену, чтобы заменить все до и после даты from пустой строкой, но я не уверен, как получить обе стороны значения. в данный момент я могу удалить все до значения даты с помощью этого ... /.*FROM_DATE":"/ но как теперь я могу удалить последнюю часть объекта?

Спасибо

Ответы [ 3 ]

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

Если вам нужно сделать замену, просто используйте:

const input = '"FILTER_DATE":"LAST_MONTH", "FROM_DATE":"2/9/2020", "TO_DATE":"3/9/2020"';
const date = input.replace(/^.*"FROM_DATE":"([\d/]+)".*$/, '$1');

Теперь вы можете использовать date, указав только дату ...

0 голосов
/ 09 марта 2020

Ваш пример строки выглядит очень как JSON. На самом деле настолько, что вы можете просто обернуть его в фигурные скобки, разобрать его как и объект и получить значение FROM_DATE.

EG:

function almostJsonStringToObject(str) {
  return JSON.parse('{' + str + '}');
}
var str = '"FILTER_DATE":"LAST_MONTH", "FROM_DATE":"2/9/2020", "TO_DATE":"3/9/2020"';
var obj = almostJsonStringToObject(str);
var fromdate = obj.FROM_DATE;
console.log(fromdate);
0 голосов
/ 09 марта 2020

Во второй раз вы можете удалить /",.*/, но мне кажется, что это слишком много heuristi c.

Лучше просто поймать первую группу захвата из следующего регулярного выражения:

/FROM_DATE":"([0-9][0-9]?\/[0-9][0-9]?\/[0-9][0-9][0-9][0-9])"/

let str = '"FILTER_DATE":"LAST_MONTH", "FROM_DATE":"2/9/2020", "TO_DATE":"3/9/2020"';
let pattern = /FROM_DATE":"([0-9][0-9]?\/[0-9][0-9]?\/[0-9][0-9][0-9][0-9])"/
alert(str.match(pattern)[1]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...