export const validUKPhone = /^(\+)?(44)?(\s*\d){9,11}$/;Actualmente tengo el siguiente RegEx para un número de teléfono, que está tratando de validar la longitud de un número.
Ahora, lo divertido de esto es que hay 3 caracteres opcionales al comienzo del patrón. +44 (potencialmente).
Mi pregunta es cómo escribir mi expresión regular para tener en cuenta este grupo y solo contar la longitud del 'cuerpo principal' del número. Si existe el +44, el patrón de longitud sería {12,14} de lo contrario {9,11}
Por ejemplo, la siguiente prueba falla.
expect(regex.test('+440798444')).toBeFalsy(); expect(regex.test('+440798444457')).toBeTruthy();(10 caracteres actualmente debido al +44 pero devuelve verdadero)
Puedes usar
/^(?:\+?44|(?!44))(?:\s*\d){9,11}$/Vea la demostración de expresiones regulares . Detalles :
^ - comienzo de la cadena(?:\+?44|(?!44)) - una coincidencia de grupo que no captura:\+?44 - un + opcional y luego 44| - o(?!44) - (una búsqueda anticipada negativa que coincide) una ubicación que no se sigue inmediatamente con 44 (agregue \s* si no desea que coincida con el número incluso si hay espacios en blanco antes/dentro de 44 )(?:\s*\d){9,11} - nueve a once ocurrencias de cero o más espacios en blanco y luego un dígito$ - final de la cadena.