1
votes

Javascript utilisant une expression régulière pour obtenir la date au milieu de l'objet

J'ai cet objet "FILTER_DATE": "LAST_MONTH", "FROM_DATE": "2/9/2020", "TO_DATE": "3/9/2020" et j'ai besoin d'extraire le FROM_DATE valeur 09/02/2020 . J'essaie d'utiliser replace, pour tout remplacer avant et après la date de début par une chaîne vide, mais je ne sais pas comment obtenir les deux côtés de la valeur. pour le moment je peux tout supprimer jusqu'à la valeur de la date avec ceci ... /.*FROM_DATE":"/ mais comment puis-je maintenant supprimer la dernière partie de l'objet?

Merci


3 commentaires

Voulez-vous dire un objet ou une chaîne?


var x = JSON.parse ("{" + your_string + "}"). FROM_DATE est un moyen d'obtenir cela et les autres valeurs, soulève la question de votre entrée est une chaîne json dans le premier lieu?


excuses, c'est une chaîne dans ce cas /


3 Réponses :


0
votes

Dans un deuxième temps, vous pourriez supprimer /",.*/ , mais cela me semble trop heuristique.

Vous feriez mieux de simplement capturer le premier groupe de capture de l'expression régulière suivante :

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]);

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


0 commentaires

1
votes

Si vous avez besoin de le faire avec replace, utilisez simplement:

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

Vous pouvez maintenant utiliser date avec juste la date dedans ... p >


1 commentaires

Merci, c'est le plus proche que je recherchais.



0
votes

Votre exemple de chaîne ressemble très à JSON. À tel point que vous pouvez simplement l'envelopper entre accolades, l'analyser en tant qu'objet et obtenir la valeur de 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 commentaires