Diferencia de regex de Java y Android

¡Buen día! Tengo un patrón regex:

Pattern p = Pattern.compile("^[a-zA-Z_\\$][\\w\\$]*(?:\\.[a-zA-Z_\\$][\\w\\$]*)*$"); 

Debería decirme si el nombre del paquete java / android es legal o no. Funciona bien en escritorio java, pero falla en los dispositivos Android

Digamos que tengo algunos nombres de paquetes:

  ". .", "ПАвыапЫВАПыва", "com.mxtech.ffmpeg.v7_neon", ... 

La prueba debe mostrar que el único paquete válido es "com.mxtech.ffmpeg.v7_neon", pero también muestra que la cadena de prueba

 " _ПАвыапЫВАПыва\_ " 

es válida. ¿Por qué? (Es cirílico.)

¿Cuál es la diferencia entre las realizaciones de Android y Desktop?

One Solution collect form web for “Diferencia de regex de Java y Android”

El problema es causado por el hecho de que \w en Android regex es Unicode consciente.

Reemplazar con [A-Za-z0-9_] para que coincidan sólo con letras ASCII, dígitos y un guión bajo.

Consulte la referencia de Pattern Android :

Tenga en cuenta que estas clases incorporadas no sólo cubren el rango ASCII tradicional. Por ejemplo, \w es equivalente a la clase de caracteres [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}] . Si realmente desea coincidir sólo con caracteres ASCII, especifique los caracteres explícitos que desea .

  • Relacionar URI con <data> como http://example.com/algo en AndroidManifest
  • Regex opcional de límites de palabras de Android
  • ¿Cómo validar una cadena usando java regex?
  • Jsoup obtiene elemento en value = ""
  • Regex para eliminar el número de pista del nombre de la canción?
  • ¿Hay una manera rápida de reconocer códigos HTML ASCII en una cadena o TextView?
  • ¿Qué hace (?! A) {0}? Significa en un regex de Java?
  • RegEx para encontrar URL en HTML tarda 25 segundos en Java / Android
  • "Secuencia de escape no válida (válidos son \ b \ t \ n \ f \ r \" \ '\\) "error de sintaxis
  • Expresión regular en Android para el campo de contraseña
  • Permitir sólo charcters seleccionados basados ​​en regex en un EditText
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.