2009-02-10 9 views
4

J'essaie de faire correspondre ce caractère 'que je peux taper avec alt-0146. Word me dit que c'est unicode 0x2019 mais je n'arrive pas à le faire en utilisant des expressions régulières dans ColdFusion. Voici un extrait que je utilise pour correspondre entre 2 et 10 lettres et Apostrophes et ce caractèreComment référencer les caractères Unicode dans ColdFusion regex?

[[:alpha:]'\x2019]{2,10} 

mais cela ne fonctionne pas. Des idées?

Répondre

7

Il semble que le raccourci \ x dans CF ne supporte que les 255 premiers caractères ASCII. Pour aller au-dessus de ce numéro, vous devez utiliser la ligne de commande chr comme ceci:

<cfscript> 
    yourString = "’"; 
    result = refind("[[:alpha:]'" & chr(8217) & "]{2,10}", yourString); 
    writeOutput(result); 
</cfscript> 

Cela devrait vous donner un match.

+0

Spot on! Je vous remercie. – Trigger

2

Une autre chose que vous pourriez essayer est notamment directement le caractère:

[[:alpha:]'#Chr(8217)#]{2,10} 


Cependant, je ne sais pas si cela va fonctionner avec une expression régulière des FC. Sinon, vous avez toujours la possibilité d'utiliser Java regex dans CF. C'est facile à faire, et vous permet d'utiliser une gamme beaucoup plus large de fonctionnalités regex, incluant presque certainement un support Unicode.

Si vous faites remplacer, vous pouvez faire directement Java Regex sur une chaîne de CF, par exemple:

<cfset NewString = OrigString.replaceAll('ajavaregex' , 'replacement')/> 


Pour d'autres fonctionnalités (par exemple, obtenir un tableau des correspondances, des fonctions de rappel sur le remplacer), J'ai créé Java RegEx Utilities - un seul composant qui simplifie ces fonctionnalités dans un seul appel de fonction.

+0

Merci. Je fais la correspondance/validation des données et pas vraiment en mesure de changer le code de validation pour utiliser votre utilitaire pratique:/ – Trigger

Questions connexes