2009-10-30 6 views

Répondre

2

Essayez:

query.replace(/\s+/g, '+').replace(/[/\\]/g, '-') 
+1

J'utiliserais simplement '/ [\/\\]/g' –

+0

@Matthew: plus doux en effet. –

+0

Initialement, j'espérais utiliser des éléments d'EncodeURI (en tant que cletus) mais comme j'essaye de créer une URL RESTful dynamique, je pense que je dois rester avec REGEX, semble-t-il. –

1

La première expression régulière remplace tous les espaces, car il a un modificateur 'g'.

vous en avez besoin pour les deux autres

1

« » Vous remplace font essentiellement un sous-ensemble de l'encodage URI. Utilisez encodeURI() ou encodeURIComponent() selon le cas. Voir Comparing escape(), encodeURI(), and encodeURIComponent() (escape() est obsolète).

En supposant _searchUrl est quelque chose comme

http://mysite.com/search?q= 

alors vous devriez faire ceci:

window.location.href = _searchUrl + encodeURIComponent(query); 

Il n'y a pas besoin (ou raison) de réinventer (partiellement) URI règles de codage avec des expressions régulières.

+0

Hmm. Je pensais que cela pourrait être le cas, ce qui était la raison pour laquelle je l'ai suggéré dans mon premier post. La raison pour laquelle j'ai besoin de cela est en raison des URL RESTful dynamiques. J'ai donc essayé et j'ai obtenu cette url =>/search/23% 2F24% 2F5% 2F6% 2F2 foo ... ce qui ne marche pas :(On dirait que je vais devoir rester avec REGEX alors ... –

Questions connexes