2011-10-21 3 views
0

J'ai une zone de texte et j'utilise jQuery pour supprimer tous les onglets, nouvelles lignes, multi-espaces etc avec un seul espace chaque fois que la zone de texte est floue.JavaScript remplacer utiliser regex pour tous les espaces multilignes et autres caractères blancs

Cependant, lorsque j'utilise les éléments suivants:

str.replace(/\s/g, ' ') 

... il supprime tous les onglets et les nouvelles lignes, mais pas les espaces multiples.

Lorsque je tente:

str.replace(/[ \s], ' ') 

... la même chose.

Lorsque je tente:

str.replace(/[(?= +)\s], ' ') 

... il ne sera pas échapper à mes parenthèses, etc.

Quelqu'un sait la syntaxe correcte pour ce que je suis en train de faire?

Merci.

Répondre

3
str.replace(/\s+/g, ' '); 

http://jsfiddle.net/KrqDH/

+0

Merci, j'espérais une solution générale que je pourrais utiliser n'importe où. Par exemple, que se passe-t-il si, à la place de tout espace, je ne voulais que des retours à la ligne, d'autres caractères aléatoires et des multispaces? Fondamentalement, j'espérais quelque chose qui me permettrait d'utiliser les [] s. – saccharine

+0

@saccharine, vos exigences ne sont pas claires pour moi. La solution peut être généralisée en ajoutant les caractères que vous voulez à une classe de caractères et en ajoutant l'opérateur '+'. Par exemple. plusieurs r et espaces seraient '[r \ s] +'. Vous pouvez également remplacer les caractères par leurs propres correspondances: 'str.replace (/ ([r \ s]) + /, '$ 1')' – davin

+0

Merci, je l'apprécie. Je pensais à regex dans le mauvais sens. – saccharine

1

Vous pourriez envisager de regarder Mozilla's Regular Expression Documentation. Cela couvre à peu près tout ce que vous voulez savoir sur les expressions régulières JavaScript.

Pour la première partie de votre question, l'expression régulière que vous voulez est /\s+/, où l'opérateur + correspond à un ou plusieurs des énoncés précédents dans l'expression (caractères d'espaces).

str.replace(/\s+/g, ' ') 

Sur la deuxième partie:

str.replace(/[(?= +)\s], ' ') 

Cela produit une erreur de syntaxe. Voulez-vous dire /[(?= +)\s]/?

+0

Salut, pouvez-vous donner une solution plus générale en utilisant []? Que se passe-t-il si je souhaite également rechercher un autre caractère ou un ensemble de caractères aléatoires? – saccharine

+0

Cela dépend des caractères que vous voulez faire correspondre. Certains caractères sont spéciaux (par exemple '?', '[', ']', '(', ')', ...) et doivent être échappés avec un antislash ('\?'). Voir [cette liste de caractères spéciaux] (https://developer.mozilla.org/fr/JavaScript/Guide/Regular_Expressions#Using_Special_Characters). – devoid

Questions connexes