2011-10-06 6 views
1

J'utilise ce modèle [^a-z0-9+\ ,#\-.] pour filtrer les étiquettes avant de les enregistrer dans ma base de données.Regex suppression des caractères supplémentaires

Cela fonctionne avec un effet secondaire indésirable; il supprime les accents: instalação devient instalao

Une idée de comment je peux garder les accents intacts tout en restant fidèle au motif? J'utilise ColdFusion, donc je suppose que c'est basé sur Java Regex, mais je peux me tromper.

Mon intention est de permettre les lettres (avec des accents), 0 à 9 chiffres arabes, les points et les hachages.

+0

@Bart, Voir la mise à jour! – Mohamad

+0

Vous êtes sûr que ColdFusion a une implémentation regex basée sur Java? –

+0

@Bart, pas positif, mais je l'imagine. L'intégration avec Java est étroite et vous pouvez appeler les méthodes Java directement. Les moteurs CF/Railo fonctionnent respectivement sur JRun/Tomcat ... – Mohamad

Répondre

5

Selon the documentation\w correspond à n'importe quelle lettre (Unicode), chiffre, mais aussi des traits de soulignement. Si vous ne voulez pas underscores, vous pouvez le faire:

[^[:alpha:]0-9#.-] 

[:alpha:] correspond à une lettre (Unicode). Si vous voulez faire correspondre les chiffres en dehors de la plage 0-9, essayez:

[^[:alnum:]##.-] 

Remarque, le hachage supplémentaire pour échapper à mes propres tags de ColdFusion, il serait par ailleurs à une étiquette formée mal-/ erreur variable.

+0

Suppression de ma réponse pour ne pas créer de confusion. – Donut

+0

@Donut, vous avez été rejeté un peu par la remarque que c'était une regex de style Java ... –

+0

J'apprends quelque chose de nouveau tous les jours! – Donut

2

Avez-vous essayé les classes de caractères? \ w correspond à des lettres, des chiffres et des traits de soulignement, et peut simplement correspondre à des caractères accentués, bien que je ne sache pas avec certitude.

2

Utilisez

[^\w] 

\ w correspond à tout caractère de mot. Dans ce cas, tous les caractères non-mot. ou

\W 

pour correspondre à tous les caractères non-mot.

+1

Il n'est pas nécessaire de placer des crochets autour de '\ W'. –

+0

Vous avez raison, merci. – Valadas

Questions connexes