IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

récupérer une valeur avant de la modifier avec RegExp


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut récupérer une valeur avant de la modifier avec RegExp
    Bonjour à tous,

    Je voudrais remplacer tout les timestamps d'un text en date lisible. J'utilise la fonction regexs pour détecter les timestamps et les remplacer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    myRegex = new RegExp("[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", 'gi');
    text = text.replace(myregex, 'madateici');
    this_text.textContent = text;
    Donc cela fonctionne pour remplacer tout les timestamps mais comment récupérer le timestamp avant qu'il ne soient remplacer afin de remplacer chaque timestamp par sa propre date ?

    Merci beaucoup
    Shaban

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par yodark Voir le message
    Donc cela fonctionne pour remplacer tout les timestamps mais comment récupérer le timestamp avant qu'il ne soient remplacer afin de remplacer chaque timestamp par sa propre date ?
    !?

    Sinon, en attendant de comprendre ta question ta regexp serait plus simple comme ça :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var myRegexp = /[0-9]{10}/g;//ou bien
    myRegexp = /\d{10}/g;
    (et n'oublie pas de déclarer tes variables avec "var" pour éviter les soucis de portée de variable ^^)

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    +1 Romain.

    D'autre part :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myRegex = new RegExp("[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]", 'gi');
    text = text.replace(myregex, 'madateici');
    ne risque pas de fonctionner, JavaScript est sensible à la casse, donc myRegex != myregex.

    Sinon, le second paramètre de replace peut être une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text = text.replace(myregex, function(timestamp){return new Date(timestamp).toLocaleString();});

  4. #4
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Étant une vraie branque en expreg je ne vais pas trop m'avancer mais je crois que dans certains languages (php/ perl? ) ya les variables $1, $2 etc... pour récupérer ta valeur et la manipuler. Hélas je pense que ça n'existe pas sous javascript et que tu vas devoir oublier le replace expreg et devoir te faire une petite fonction qui opérera ton string de façon chirurgical avec des getPos et des subStr. ( enfin c'est pas la mort non plus, ça doit pouvoir ce faire en 2-3 lignes )

  5. #5
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Ah si, apparement ça fonctiomne aussi en js.

    Donc :

    Edit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text = text.replace(/(\d{10})/g,function(s){ return new Date(parseInt(s)); });


    Edit2: ok, finalement j'ai réécris la même chose que Bovino.^^

  6. #6
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Sinon pour mon histoire des $1, un exemple qui s'utilise sans fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text = text.replace(/(\d{10})/g,"ceci est un timestamp : $1, ");

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2003
    Messages : 97
    Points : 45
    Points
    45
    Par défaut
    Merci j'ai utilisé ca finalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    text = text.replace(/(\d{10})/g,convertDate(RegExp.$1)); 
    	this_text.textContent = text;
    Ca marche sauf pour la première instance de timestamp que me revoie systématiquement 0

  8. #8
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par yodark Voir le message
    Merci j'ai utilisé ca finalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    text = text.replace(/(\d{10})/g,convertDate(RegExp.$1)); 
    	this_text.textContent = text;
    Ca marche sauf pour la première instance de timestamp que me revoie systématiquement 0
    en gros la fonction convertDate dont tu ne nous donnes pas le code ne fonctionne pas ... on va avoir du mal à t'aider avec ça.

Discussions similaires

  1. Récupérer une valeur avec caractère special
    Par medmans dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/10/2008, 18h50
  2. Comment récupérer une valeur de cellule avec le bon format?
    Par jeo13 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/06/2008, 12h41
  3. Réponses: 4
    Dernier message: 06/02/2008, 21h25
  4. [MySQL] Récupérer une valeur avec SELECT sensible à la casse
    Par nuphius dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/01/2007, 15h21
  5. Récupérer une valeur avec un textarea
    Par Viau dans le forum Langage
    Réponses: 6
    Dernier message: 14/02/2006, 17h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo