2012-04-17 15 views
5

tengo la siguiente expresión regular:diacríticos Regex

String regExpression = "^[a-zA-Z0-9+,. '-]{1,"+maxCharacters+"}$"; 

que funciona muy bien para mí, si no, que no permite ningún UTF-8 diacríticos en ella (A A A A I I S M M) .

Solo necesito mi expresión regular actual para aceptar signos diacríticos además de lo que ya hace.

Cualquier ayuda es apreciada. Gracias.

Respuesta

6

Tienes que mirar en el POSIX character classes para atraparlos. Desafortunadamente, Java Regex no es compatible con las clases de lenguaje específicas de POSIX, pero tal vez \p{Graph} A visible character: [\p{Alnum}\p{Punct}] o \p{Print} A printable character: [\p{Graph}\x20] cabrán.

Mejor ajuste según lo sugerido por Sorin probablemente es \p{L} (Carta).

import java.util.regex.Pattern; 

public class Regexer { 

    public static void main(String[] args) { 
     int maxCharacters = 100; 
     String data = "Ă ă Â â Î î Ș ș Ț ț"; 
     String pattern = "^[\\p{L}0-9+,. '-]{1," + maxCharacters + "}$"; 

     Pattern p = Pattern.compile(pattern); 

     if (p.matcher(data).matches()) { 
      System.out.println("Hit"); 
     } else { 
      System.out.println("No"); 
     } 

    } 
} 

Esto funciona para mí.

+6

O, mejor aún, [\ p {L}] que significa letra. – Sorin

+0

Tienes razón, añadiré esto. –

+0

Hm .. Intenté con \ p {L} y todavía no funcionó. Lo único que funcionó hasta ahora es "^ [\\ wĂăÂâîîşŢţ0-9 + ,. '-] {1," + maxCharacters + "} $" pero no sé qué tan bien está. Pensamientos sobre esto? – Fofole

Cuestiones relacionadas