Las soluciones anteriores son superiores, especialmente si utiliza Java y encuentra más números con más de 10 dígitos, como el prefijo del código internacional o números de extensión adicionales. Esta solución es básica (soy un principiante en el mundo de las expresiones regulares) y está diseñada teniendo en cuenta los números de teléfono de EE. UU. Y solo es útil para cadenas con solo 10 números con quizás algunos caracteres de formato, o tal vez sin caracteres de formato (solo 10 números ). Como tal, recomendaría esta solución solo para aplicaciones semiautomáticas. Personalmente, prefiero almacenar números como solo 10 números sin formatear caracteres, pero también quiero poder convertir o limpiar números de teléfono al formato estándar que la gente normal y las aplicaciones / teléfonos reconocerán instantáneamente a voluntad.
Encontré esta publicación buscando algo que pudiera usar con una aplicación de limpieza de texto que tenga capacidades PCRE Regex (pero no funciones de Java). Publicaré esto aquí para las personas que podrían usar una solución Regex pura simple que podría funcionar en una variedad de editores de texto, limpiadores, expansores o incluso algunos administradores de portapapeles. Yo personalmente uso Sublime y TextSoap. Esta solución se creó para Text Soap, ya que vive en la barra de menú y proporciona un menú desplegable donde puede activar acciones de manipulación de texto en lo que selecciona el cursor o en el portapapeles.
Mi enfoque es esencialmente dos sustituciones / buscar y reemplazar expresiones regulares. Cada búsqueda de sustitución y reemplazo implica dos expresiones regulares, una para buscar y otra para reemplazar.
Sustitución / Buscar y reemplazar # 1
- La primera sustitución / buscar y reemplazar elimina los números no numéricos de un número de 10 dígitos a una cadena de 10 dígitos.
Primera sustitución / búsqueda Regex:\D
- Esta cadena de búsqueda coincide con todos los caracteres que no son dígitos.
Primera sustitución / Reemplazo Regex: "" (nada, ni siquiera un espacio)
- Deje el campo sustituto completamente en blanco, no debe haber espacios en blanco, incluidos los espacios. Esto resultará en la eliminación de todos los caracteres coincidentes que no sean dígitos. Debería haber ingresado con 10 dígitos + caracteres de formato antes de esta operación y haber salido con 10 dígitos sin caracteres de formato.
Sustitución / Buscar y reemplazar # 2
- La segunda sustitución / buscar y reemplazar Búsqueda parte de los grupos de capturas de operación para el código de área
$1
, un grupo de captura para el segundo conjunto de tres números $2
, y el último grupo de captura para el último conjunto de cuatro números $3
. La expresión regular de la parte sustituta de la operación inserta el formato del número de teléfono de EE. UU. Entre el grupo de dígitos capturado.
Segunda sustitución / búsqueda Regex:(\d{3})(\d{3})(\d{4})
Segunda sustitución / Reemplazo de Regex:\($1\) $2\-$3
La barra invertida \
se escapa de los caracteres especiales (
, )
,
(<-whitespace), y -
ya que estamos insertándolos entre nuestros números capturados en grupos de captura $1
, $2
, y $3
para fines de formato el número de teléfono de Estados Unidos.
En TextSoap creé un limpiador personalizado que incluye las dos acciones de operación de sustitución, por lo que en la práctica se siente idéntico a ejecutar un script. Estoy seguro de que esta solución podría mejorarse, pero espero que la complejidad aumente bastante. Una versión mejorada de esta solución es bienvenida como una experiencia de aprendizaje si alguien quiere agregar algo a esto.