2009-07-10 6 views
0

je supprimer le format suivant de la fin d'une chaîne en javascriptComment supprimer des chiffres et du texte à partir de la fin d'une chaîne en Javascript

1234, Australia 

Et seulement à la fin d'une chaîne.

Comment est-ce que je ferais ceci?

+2

Pouvez-vous expliquer un peu plus. Voulez-vous dire que vous devez supprimer un nombre à 4 chiffres, suivi d'une virgule, suivi d'un pays à partir d'une chaîne? La chaîne est-elle toujours de longueur fixe? Autrement dit, le code à 4 chiffres commence-t-il toujours au même endroit? – dave

+0

Ummm, vous avez une chaîne comme celle-ci "some-long-string 1234, Australie", et vous voulez supprimer ce "1234, Australie" du dernier, ai-je raison? – Kirtan

+0

Oui, vous avez raison Kirtan, évidemment le 1234 peut être n'importe quel nombre à 4 chiffres. – navitronic

Répondre

2

Ok, donc j'ai trouvé ce que je faisais mal ...

var a = '888 Welles St, Scoresby Victoria 3179, Australia'.replace('/\d{4}, Australia/', ''); 
alert(a); 

je le motif entourant regex entre guillemets. Ce dont il n'a apparemment pas besoin. Donc, cela fonctionne:

var a = '888 Welles St, Scoresby Victoria 3179, Australia'.replace(/\d{4}, Australia/, ''); 
alert(a); 
+6

Si vous voulez vous assurer que le "xxxx, Australia" est seulement apparié quand il est à la fin de la chaîne, vous devrez ajouter un signe dollar après "Australia":/\ d {4}, Australia $/ –

+0

Vous voudriez aussi ajouter le commutateur/i à votre Regex si différents cas du mot "Australie" ("AustraLIA", "australie", etc.) se glissent dans votre texte. – Kirtan

2

Votre solution est bonne.
J'ajouterais la $ pour ne pas remplacer quoi que ce soit sans le vouloir:

a = strVar.replace((/\d{4}, \w+$/,''); 

Explication de here:

/et des allumettes $/"et" dans "la terre" mais pas "atterrissage"

Et vous pouvez même obtenir un peu plus fou en ajoutant des limites de mots:

a = strVar.replace((/\d{4}, \b\w+\b$/,''); 
+0

Autant que je vois, les limites de mots dans votre deuxième regex sont inutiles. Un espace suivi de '\ w 'implique déjà une limite de mot. La même chose vaut pour '\ w' suivi de' $ '. – Geert

+0

@Geert, vous avez absolument raison. J'ai ajouté des limites de mots pour démontrer une façon possible de rendre cette expression utile utile dans des situations plus générales. À l'heure actuelle, la regex n'est pas particulièrement bonne pour gérer différentes entrées - ce qui est bien entendu compris par le PO puisqu'il ne l'utilise que pour ce cas particulier. Ton commentaire est très apprécié. – bernie

Questions connexes